diff --git a/client/components/Dropdown.jsx b/client/components/Dropdown.jsx
index bd2169b8..5da1fe70 100644
--- a/client/components/Dropdown.jsx
+++ b/client/components/Dropdown.jsx
@@ -58,23 +58,27 @@ const DropdownWrapper = styled.ul`
`;
// TODO: Add Icon to the left of the items in the menu
-// const MaybeIcon = (Element, label) => Element && ;
+const MaybeIcon = (Element, label) => Element && ;
const Dropdown = ({ items, align }) => (
{/* className="nav__items-left" */}
- {items && items.map(({ title, icon, href }) => (
+ {items && items.map(({
+ title, icon, href, action
+ }) => (
-
- {/* {MaybeIcon(icon, `Navigate to ${title}`)} */}
- {title}
-
+ {MaybeIcon(icon, `Navigate to ${title}`)}
+ {href
+ ? {title}
+ : action()}>{title}}
+
))
}
);
+
Dropdown.propTypes = {
align: PropTypes.oneOf(['left', 'right']),
items: PropTypes.arrayOf(PropTypes.shape({
diff --git a/client/components/mobile/IconButton.jsx b/client/components/mobile/IconButton.jsx
index 08f05311..7085f8a1 100644
--- a/client/components/mobile/IconButton.jsx
+++ b/client/components/mobile/IconButton.jsx
@@ -17,7 +17,7 @@ const IconButton = (props) => {
const Icon = icon;
return (}
+ iconBefore={icon && }
kind={Button.kinds.inline}
focusable="false"
{...otherProps}
@@ -25,7 +25,11 @@ const IconButton = (props) => {
};
IconButton.propTypes = {
- icon: PropTypes.func.isRequired
+ icon: PropTypes.func
+};
+
+IconButton.defaultProps = {
+ icon: null
};
export default IconButton;
diff --git a/client/modules/App/App.jsx b/client/modules/App/App.jsx
index af441a9d..2c960b8b 100644
--- a/client/modules/App/App.jsx
+++ b/client/modules/App/App.jsx
@@ -34,7 +34,7 @@ class App extends React.Component {
render() {
return (
- {this.state.isMounted && !window.devToolsExtension && getConfig('NODE_ENV') === 'development' && }
+ {false && this.state.isMounted && !window.devToolsExtension && getConfig('NODE_ENV') === 'development' && }
{this.props.children}
);
diff --git a/client/modules/IDE/pages/MobileIDEView.jsx b/client/modules/IDE/pages/MobileIDEView.jsx
index c33c6cda..c2a408cf 100644
--- a/client/modules/IDE/pages/MobileIDEView.jsx
+++ b/client/modules/IDE/pages/MobileIDEView.jsx
@@ -46,18 +46,20 @@ const NavItem = styled.li`
position: relative;
`;
-const getNatOptions = (username = undefined) =>
+const getNavOptions = (username = undefined, logoutUser = () => {}) =>
(username
? [
{ icon: PreferencesIcon, title: 'Preferences', href: '/mobile/preferences', },
{ icon: PreferencesIcon, title: 'My Stuff', href: `/mobile/${username}/sketches` },
{ icon: PreferencesIcon, title: 'Examples', href: '/mobile/p5/sketches' },
{ icon: PreferencesIcon, title: 'Original Editor', href: '/', },
+ { icon: PreferencesIcon, title: 'Logout', action: logoutUser, },
]
: [
{ icon: PreferencesIcon, title: 'Preferences', href: '/mobile/preferences', },
{ icon: PreferencesIcon, title: 'Examples', href: '/mobile/p5/sketches' },
{ icon: PreferencesIcon, title: 'Original Editor', href: '/', },
+ { icon: PreferencesIcon, title: 'Login', href: '/login', },
]
);
@@ -65,7 +67,7 @@ const MobileIDEView = (props) => {
const {
preferences, ide, editorAccessibility, project, updateLintMessage, clearLintMessage,
selectedFile, updateFileContent, files, user, params,
- closeEditorOptions, showEditorOptions,
+ closeEditorOptions, showEditorOptions, logoutUser,
startRefreshSketch, stopSketch, expandSidebar, collapseSidebar, clearConsole, console,
showRuntimeErrorWarning, hideRuntimeErrorWarning, startSketch, getProject, clearPersistedState
} = props;
@@ -75,7 +77,7 @@ const MobileIDEView = (props) => {
const { username } = user;
const [triggerNavDropdown, NavDropDown] = useAsModal();
@@ -267,6 +269,8 @@ MobileIDEView.propTypes = {
username: PropTypes.string,
}).isRequired,
+ logoutUser: PropTypes.func.isRequired,
+
getProject: PropTypes.func.isRequired,
clearPersistedState: PropTypes.func.isRequired,
params: PropTypes.shape({