Skip to content

Commit 79e024f

Browse files
authored
Merge branch 'edx:master' into master
2 parents 2936d2a + 440eacb commit 79e024f

29 files changed

+5616
-5073
lines changed

.github/workflows/release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ jobs:
3131
- name: Build
3232
run: npm run build
3333
- name: Release
34+
uses: cycjimmy/semantic-release-action@v2
35+
with:
36+
semantic_version: 16
3437
env:
3538
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_GITHUB_TOKEN }}
3639
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }}
37-
run: npx semantic-release

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
transifex_resource = frontend-component-header
2-
transifex_langs = "ar,fr,es_419,zh_CN"
2+
transifex_langs = "ar,fr,fr_CA,es_419,zh_CN"
33

44
transifex_utils = ./node_modules/.bin/transifex-utils.js
55
i18n = ./src/i18n

README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ Examples
5656
* `An example of component and messages usage. <https://github.com/edx/frontend-template-application/blob/3355bb3a96232390e9056f35b06ffa8f105ed7ca/src/index.jsx#L21>`_
5757
* `An example of SCSS file usage. <https://github.com/edx/frontend-template-application/blob/3cd5485bf387b8c479baf6b02bf59e3061dc3465/src/index.scss#L8>`_
5858

59+
5960
***********
6061
Development
6162
***********

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const { createConfig } = require('@edx/frontend-build');
22

33
module.exports = createConfig('jest', {
4-
setupFiles: [
4+
setupFilesAfterEnv: [
55
'<rootDir>/src/setupTest.js',
66
],
77
});

package-lock.json

Lines changed: 5031 additions & 5055 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"devDependencies": {
3636
"@edx/brand": "npm:@edx/[email protected]",
3737
"@edx/frontend-build": "5.6.14",
38-
"@edx/frontend-platform": "1.14.0",
38+
"@edx/frontend-platform": "1.14.4",
3939
"@edx/paragon": "12.8.0",
4040
"codecov": "3.8.3",
4141
"enzyme": "3.11.0",
@@ -49,16 +49,26 @@
4949
"react-test-renderer": "16.14.0",
5050
"reactifex": "1.1.1",
5151
"redux": "4.1.2",
52-
"redux-saga": "1.1.3"
52+
"redux-saga": "1.1.3",
53+
"@testing-library/dom": "7.31.2",
54+
"@testing-library/jest-dom": "5.16.1",
55+
"jest": "27.3.1",
56+
"jest-chain": "1.1.5",
57+
"@testing-library/react": "10.3.0"
5358
},
5459
"dependencies": {
5560
"babel-polyfill": "6.26.0",
5661
"react-responsive": "8.2.0",
57-
"react-transition-group": "4.4.2"
62+
"react-transition-group": "4.4.2",
63+
"@fortawesome/fontawesome-svg-core": "1.2.36",
64+
"@fortawesome/free-brands-svg-icons": "5.15.4",
65+
"@fortawesome/free-regular-svg-icons": "5.15.4",
66+
"@fortawesome/free-solid-svg-icons": "5.15.4",
67+
"@fortawesome/react-fontawesome": "^0.1.14"
5868
},
5969
"peerDependencies": {
6070
"@edx/frontend-platform": "^1.8.0",
61-
"@edx/paragon": "^7.0.0",
71+
"@edx/paragon": ">= ^7.0.0 < 13.0.0",
6272
"prop-types": "^15.5.10",
6373
"react": "^16.9.0",
6474
"react-dom": "^16.9.0"

src/Header.jsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ function Header({ intl }) {
4141
},
4242
];
4343

44+
const orderHistoryItem = {
45+
type: 'item',
46+
href: config.ORDER_HISTORY_URL,
47+
content: intl.formatMessage(messages['header.user.menu.order.history']),
48+
};
49+
4450
const userMenu = authenticatedUser === null ? [] : [
4551
{
4652
type: 'item',
@@ -57,18 +63,18 @@ function Header({ intl }) {
5763
href: `${config.LMS_BASE_URL}/account/settings`,
5864
content: intl.formatMessage(messages['header.user.menu.account.settings']),
5965
},
60-
{
61-
type: 'item',
62-
href: config.ORDER_HISTORY_URL,
63-
content: intl.formatMessage(messages['header.user.menu.order.history']),
64-
},
6566
{
6667
type: 'item',
6768
href: config.LOGOUT_URL,
6869
content: intl.formatMessage(messages['header.user.menu.logout']),
6970
},
7071
];
7172

73+
// Users should only see Order History if have a ORDER_HISTORY_URL define in the environment.
74+
if (config.ORDER_HISTORY_URL) {
75+
userMenu.splice(-1, 0, orderHistoryItem);
76+
}
77+
7278
const loggedOutItems = [
7379
{
7480
type: 'item',

src/generic/messages.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { defineMessages } from '@edx/frontend-platform/i18n';
2+
3+
const messages = defineMessages({
4+
registerSentenceCase: {
5+
id: 'general.register.sentenceCase',
6+
defaultMessage: 'Register',
7+
description: 'Text in a button, prompting the user to register.',
8+
},
9+
signInSentenceCase: {
10+
id: 'general.signIn.sentenceCase',
11+
defaultMessage: 'Sign in',
12+
description: 'Text in a button, prompting the user to log in.',
13+
},
14+
});
15+
16+
export default messages;

src/i18n/index.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
import arMessages from './messages/ar.json';
2+
3+
import caMessages from './messages/ca.json';
4+
import heMessages from './messages/he.json';
5+
import idMessages from './messages/id.json';
6+
import plMessages from './messages/pl.json';
7+
import ruMessages from './messages/ru.json';
8+
import thMessages from './messages/th.json';
9+
import ukMessages from './messages/uk.json';
10+
211
// no need to import en messages-- they are in the defaultMessage field
312
import es419Messages from './messages/es_419.json';
413
import frMessages from './messages/fr.json';
@@ -8,6 +17,13 @@ import zhcnMessages from './messages/zh_CN.json';
817

918
const messages = {
1019
ar: arMessages,
20+
ca: caMessages,
21+
he: heMessages,
22+
id: idMessages,
23+
pl: plMessages,
24+
ru: ruMessages,
25+
th: thMessages,
26+
uk: ukMessages,
1127
'es-419': es419Messages,
1228
fr: frMessages,
1329
'zh-cn': zhcnMessages,

src/i18n/messages/ar.json

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,30 @@
11
{
2-
}
2+
"general.register.sentenceCase": "Register",
3+
"general.signIn.sentenceCase": "Sign in",
4+
"header.links.courses": "Courses",
5+
"header.links.programs": "Programs",
6+
"header.links.content.search": "Discover New",
7+
"header.links.schools": "Schools & Partners",
8+
"header.user.menu.dashboard": "Dashboard",
9+
"header.user.menu.profile": "Profile",
10+
"header.user.menu.account.settings": "Account",
11+
"header.user.menu.order.history": "Order History",
12+
"header.user.menu.logout": "Logout",
13+
"header.user.menu.login": "Login",
14+
"header.user.menu.register": "Sign Up",
15+
"header.label.account.nav": "Account",
16+
"header.label.account.menu": "Account Menu",
17+
"header.label.account.menu.for": "Account menu for {username}",
18+
"header.label.main.nav": "Main",
19+
"header.label.main.menu": "Main Menu",
20+
"header.label.main.header": "Main",
21+
"header.label.secondary.nav": "Secondary",
22+
"header.label.skip.nav": "Skip to main content",
23+
"header.menu.dashboard.label": "Dashboard",
24+
"header.help.label": "Help",
25+
"header.menu.profile.label": "Profile",
26+
"header.menu.account.label": "Account",
27+
"header.menu.orderHistory.label": "Order History",
28+
"header.navigation.skipNavLink": "Skip to main content.",
29+
"header.menu.signOut.label": "Sign Out"
30+
}

src/i18n/messages/ca.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/es_419.json

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,30 @@
11
{
2-
}
2+
"general.register.sentenceCase": "Register",
3+
"general.signIn.sentenceCase": "Sign in",
4+
"header.links.courses": "Courses",
5+
"header.links.programs": "Programs",
6+
"header.links.content.search": "Discover New",
7+
"header.links.schools": "Schools & Partners",
8+
"header.user.menu.dashboard": "Dashboard",
9+
"header.user.menu.profile": "Profile",
10+
"header.user.menu.account.settings": "Account",
11+
"header.user.menu.order.history": "Order History",
12+
"header.user.menu.logout": "Logout",
13+
"header.user.menu.login": "Login",
14+
"header.user.menu.register": "Sign Up",
15+
"header.label.account.nav": "Account",
16+
"header.label.account.menu": "Account Menu",
17+
"header.label.account.menu.for": "Account menu for {username}",
18+
"header.label.main.nav": "Main",
19+
"header.label.main.menu": "Main Menu",
20+
"header.label.main.header": "Main",
21+
"header.label.secondary.nav": "Secondary",
22+
"header.label.skip.nav": "Skip to main content",
23+
"header.menu.dashboard.label": "Dashboard",
24+
"header.help.label": "Help",
25+
"header.menu.profile.label": "Profile",
26+
"header.menu.account.label": "Account",
27+
"header.menu.orderHistory.label": "Order History",
28+
"header.navigation.skipNavLink": "Skip to main content.",
29+
"header.menu.signOut.label": "Sign Out"
30+
}

src/i18n/messages/fr.json

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,30 @@
11
{
2-
}
2+
"general.register.sentenceCase": "S'inscrire",
3+
"general.signIn.sentenceCase": "Connectez-vous",
4+
"header.links.courses": "Cours",
5+
"header.links.programs": "Programmes",
6+
"header.links.content.search": "Explorer les cours",
7+
"header.links.schools": "Écoles et partenaires",
8+
"header.user.menu.dashboard": "Tableau de bord",
9+
"header.user.menu.profile": "Profil",
10+
"header.user.menu.account.settings": "Compte",
11+
"header.user.menu.order.history": "Historique des commandes",
12+
"header.user.menu.logout": "Déconnexion",
13+
"header.user.menu.login": "Connexion",
14+
"header.user.menu.register": "S'inscrire",
15+
"header.label.account.nav": "Compte",
16+
"header.label.account.menu": "Menu du compte",
17+
"header.label.account.menu.for": "Account menu for {username}",
18+
"header.label.main.nav": "Principal",
19+
"header.label.main.menu": "Menu Principal",
20+
"header.label.main.header": "Principal",
21+
"header.label.secondary.nav": "Secondaire",
22+
"header.label.skip.nav": "Passer au contenu principal",
23+
"header.menu.dashboard.label": "Tableau de bord",
24+
"header.help.label": "Aide",
25+
"header.menu.profile.label": "Profil",
26+
"header.menu.account.label": "Compte",
27+
"header.menu.orderHistory.label": "Historique des commandes",
28+
"header.navigation.skipNavLink": "Passer au contenu principal",
29+
"header.menu.signOut.label": "Se déconnecter"
30+
}

src/i18n/messages/fr_CA.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"general.register.sentenceCase": "Inscription",
3+
"general.signIn.sentenceCase": "Connexion",
4+
"header.links.courses": "Cours",
5+
"header.links.programs": "Programmes",
6+
"header.links.content.search": "Découvrir les nouveautés",
7+
"header.links.schools": "Écoles et Partenaires",
8+
"header.user.menu.dashboard": "Tableau de bord",
9+
"header.user.menu.profile": "Profil",
10+
"header.user.menu.account.settings": "Compte",
11+
"header.user.menu.order.history": "Historique des commandes",
12+
"header.user.menu.logout": "Déconnexion",
13+
"header.user.menu.login": "Connexion",
14+
"header.user.menu.register": "S'inscrire",
15+
"header.label.account.nav": "Compte",
16+
"header.label.account.menu": "Menu de compte",
17+
"header.label.account.menu.for": "Menu de compte pour {username}",
18+
"header.label.main.nav": "Principal",
19+
"header.label.main.menu": "Menu principal",
20+
"header.label.main.header": "Principal",
21+
"header.label.secondary.nav": "Secondaire",
22+
"header.label.skip.nav": "Passer au contenu de cette vue",
23+
"header.menu.dashboard.label": "Tableau de bord",
24+
"header.help.label": "Aide",
25+
"header.menu.profile.label": "Profil",
26+
"header.menu.account.label": "Compte",
27+
"header.menu.orderHistory.label": "Historique des commandes",
28+
"header.navigation.skipNavLink": "Passer au contenu principal.",
29+
"header.menu.signOut.label": "Se déconnecter"
30+
}

src/i18n/messages/he.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/id.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/pl.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/ru.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/th.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/uk.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

src/i18n/messages/zh_CN.json

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,30 @@
11
{
2-
}
2+
"general.register.sentenceCase": "Register",
3+
"general.signIn.sentenceCase": "Sign in",
4+
"header.links.courses": "Courses",
5+
"header.links.programs": "Programs",
6+
"header.links.content.search": "Discover New",
7+
"header.links.schools": "Schools & Partners",
8+
"header.user.menu.dashboard": "Dashboard",
9+
"header.user.menu.profile": "Profile",
10+
"header.user.menu.account.settings": "Account",
11+
"header.user.menu.order.history": "Order History",
12+
"header.user.menu.logout": "Logout",
13+
"header.user.menu.login": "Login",
14+
"header.user.menu.register": "Sign Up",
15+
"header.label.account.nav": "Account",
16+
"header.label.account.menu": "Account Menu",
17+
"header.label.account.menu.for": "Account menu for {username}",
18+
"header.label.main.nav": "Main",
19+
"header.label.main.menu": "Main Menu",
20+
"header.label.main.header": "Main",
21+
"header.label.secondary.nav": "Secondary",
22+
"header.label.skip.nav": "Skip to main content",
23+
"header.menu.dashboard.label": "Dashboard",
24+
"header.help.label": "Help",
25+
"header.menu.profile.label": "Profile",
26+
"header.menu.account.label": "Account",
27+
"header.menu.orderHistory.label": "Order History",
28+
"header.navigation.skipNavLink": "Skip to main content.",
29+
"header.menu.signOut.label": "Sign Out"
30+
}

src/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Header from './Header';
2+
import LearningHeader from './learning-header/LearningHeader';
23
import messages from './i18n/index';
34

4-
export { messages };
5+
export { LearningHeader, messages };
56

67
export default Header;

src/index.scss

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,30 @@ $white: #fff;
2525
}
2626
}
2727

28+
.learning-header {
29+
min-width: 0;
30+
31+
.course-title-lockup {
32+
min-width: 0;
33+
34+
span {
35+
white-space: nowrap;
36+
overflow: hidden;
37+
text-overflow: ellipsis;
38+
padding-bottom: 0.1rem;
39+
}
40+
}
41+
42+
.user-dropdown {
43+
.btn {
44+
height: 3rem;
45+
@media (max-width: -1 + map-get($grid-breakpoints, "sm")) {
46+
padding: 0 0.5rem;
47+
}
48+
}
49+
}
50+
}
51+
2852
.site-header-mobile,
2953
.site-header-desktop {
3054
position: relative;

0 commit comments

Comments
 (0)