Skip to content

Commit 1c958f7

Browse files
committed
Toggle instructions hamburger menu item on state
1 parent bb8eb7f commit 1c958f7

6 files changed

Lines changed: 28 additions & 6 deletions

File tree

locales/en/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"export-gist": "Export Gist",
55
"export-repo": "Export Repo",
66
"share-to-classroom": "Share To Classroom",
7-
"add-or-edit-instructions": "Add/Edit Instructions",
7+
"add-instructions": "Add Instructions",
8+
"edit-instructions": "Edit Instructions",
89
"libraries": "Libraries",
910
"load-project": "Your Projects",
1011
"new-project": "New Project",

src/components/TopBar/HamburgerMenu.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const HamburgerMenu = createMenu({
1212
name: 'hamburger',
1313

1414
renderItems({
15+
hasInstructions,
1516
isEditingInstructions,
1617
isExperimental,
1718
isGistExportInProgress,
@@ -36,10 +37,15 @@ const HamburgerMenu = createMenu({
3637
if (isExperimental) {
3738
items.push(
3839
<MenuItem
40+
isDisabled={isEditingInstructions}
3941
key="addOrEditInstructions"
4042
onClick={isEditingInstructions ? noop : onStartEditingInstructions}
4143
>
42-
{t('top-bar.add-or-edit-instructions')}
44+
{
45+
hasInstructions ?
46+
t('top-bar.edit-instructions') :
47+
t('top-bar.add-instructions')
48+
}
4349
</MenuItem>,
4450
);
4551
}
@@ -109,6 +115,7 @@ const HamburgerMenu = createMenu({
109115

110116

111117
HamburgerMenu.propTypes = {
118+
hasInstructions: PropTypes.bool.isRequired,
112119
isClassroomExportInProgress: PropTypes.bool.isRequired,
113120
isEditingInstructions: PropTypes.bool.isRequired,
114121
isExperimental: PropTypes.bool.isRequired,

src/components/TopBar/createMenu.jsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ import React from 'react';
1111
import {closeTopBarMenu, toggleTopBarMenu} from '../../actions';
1212
import {getOpenTopBarMenu} from '../../selectors';
1313

14-
export function MenuItem({children, isEnabled, onClick}) {
14+
export function MenuItem({children, isDisabled, isEnabled, onClick}) {
1515
return (
1616
<div
17-
className={classnames('top-bar__menu-item',
18-
{'top-bar__menu-item_active': isEnabled},
19-
)}
17+
className={classnames('top-bar__menu-item', {
18+
'top-bar__menu-item_active': isEnabled,
19+
'top-bar__menu-item_disabled': isDisabled,
20+
})}
2021
onClick={onClick}
2122
>
2223
{children}
@@ -26,11 +27,13 @@ export function MenuItem({children, isEnabled, onClick}) {
2627

2728
MenuItem.propTypes = {
2829
children: PropTypes.node.isRequired,
30+
isDisabled: PropTypes.bool,
2931
isEnabled: PropTypes.bool,
3032
onClick: PropTypes.func.isRequired,
3133
};
3234

3335
MenuItem.defaultProps = {
36+
isDisabled: false,
3437
isEnabled: false,
3538
};
3639

src/components/TopBar/index.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default function TopBar({
2929
currentProjectKey,
3030
currentUser,
3131
enabledLibraries,
32+
hasInstructions,
3233
isEditingInstructions,
3334
isExperimental,
3435
isGistExportInProgress,
@@ -94,6 +95,7 @@ export default function TopBar({
9495
onStartLogIn={onStartLogIn}
9596
/>
9697
<HamburgerMenu
98+
hasInstructions={hasInstructions}
9799
isClassroomExportInProgress={isClassroomExportInProgress}
98100
isEditingInstructions={isEditingInstructions}
99101
isExperimental={isExperimental}
@@ -115,6 +117,7 @@ TopBar.propTypes = {
115117
currentProjectKey: PropTypes.string,
116118
currentUser: PropTypes.object.isRequired,
117119
enabledLibraries: PropTypes.arrayOf(PropTypes.string).isRequired,
120+
hasInstructions: PropTypes.bool.isRequired,
118121
isClassroomExportInProgress: PropTypes.bool.isRequired,
119122
isEditingInstructions: PropTypes.bool.isRequired,
120123
isExperimental: PropTypes.bool.isRequired,

src/containers/TopBar.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {connect} from 'react-redux';
22
import TopBar from '../components/TopBar';
33
import {
44
getCurrentProjectKey,
5+
getCurrentProjectInstructions,
56
getCurrentUser,
67
getCurrentValidationState,
78
getEnabledLibraries,
@@ -36,6 +37,7 @@ function mapStateToProps(state) {
3637
currentProjectKey: getCurrentProjectKey(state),
3738
currentUser: getCurrentUser(state),
3839
enabledLibraries: getEnabledLibraries(state),
40+
hasInstructions: Boolean(getCurrentProjectInstructions(state)),
3941
isEditingInstructions: isEditingInstructions(state),
4042
isExperimental: isExperimental(state),
4143
isGistExportInProgress: isGistExportInProgress(state),

src/css/application.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,12 @@ body {
285285
font-weight: bold;
286286
}
287287

288+
.top-bar__menu-item_disabled {
289+
font-style: italic;
290+
color: var(--color-gray);
291+
cursor: default;
292+
}
293+
288294
.top-bar__drop-down-button {
289295
padding-left: 0.5em;
290296
}

0 commit comments

Comments
 (0)