From 357b824033b1197992806a300dd6221dcdcc065c Mon Sep 17 00:00:00 2001 From: Ahmad Abdolsaheb Date: Wed, 20 Feb 2019 15:41:33 +0300 Subject: [PATCH] fix: custom menu for guide --- client/gatsby-browser.js | 8 +- client/gatsby-ssr.js | 9 +- client/src/components/Header/index.js | 51 +++++++- client/src/components/layouts/Default.js | 9 +- client/src/components/layouts/Guide.js | 112 +++++++++++------- .../layouts/components/guide/SideNav.js | 24 ++++ client/src/components/layouts/redux/index.js | 32 +++++ client/src/redux/rootReducer.js | 5 + 8 files changed, 184 insertions(+), 66 deletions(-) create mode 100644 client/src/components/layouts/redux/index.js diff --git a/client/gatsby-browser.js b/client/gatsby-browser.js index b51e89793d..fda4744808 100644 --- a/client/gatsby-browser.js +++ b/client/gatsby-browser.js @@ -4,7 +4,7 @@ import { Provider } from 'react-redux'; import { createStore } from './src/redux/createStore'; import AppMountNotifier from './src/components/AppMountNotifier'; -import GuideNavContextProvider from './src/contexts/GuideNavigationContext'; + import { CertificationLayout, DefaultLayout, @@ -16,9 +16,7 @@ const store = createStore(); export const wrapRootElement = ({ element }) => { return ( - - element} /> - + element} /> ); }; @@ -43,7 +41,7 @@ export const wrapPageElement = ({ element, props }) => { } if (/^\/guide(\/.*)*/.test(pathname)) { return ( - + {element} ); diff --git a/client/gatsby-ssr.js b/client/gatsby-ssr.js index 7cc4fc9022..789d2b7f4b 100644 --- a/client/gatsby-ssr.js +++ b/client/gatsby-ssr.js @@ -6,7 +6,6 @@ import { Provider } from 'react-redux'; import headComponents from './src/head'; import { createStore } from './src/redux/createStore'; -import GuideNavContextProvider from './src/contexts/GuideNavigationContext'; import { CertificationLayout, DefaultLayout, @@ -16,11 +15,7 @@ import { const store = createStore(); export const wrapRootElement = ({ element }) => { - return ( - - {element} - - ); + return {element}; }; wrapRootElement.propTypes = { @@ -43,7 +38,7 @@ export const wrapPageElement = ({ element, props }) => { } if (/^\/guide(\/.*)*/.test(pathname)) { return ( - + {element} ); diff --git a/client/src/components/Header/index.js b/client/src/components/Header/index.js index 28f04d58d2..5925643599 100644 --- a/client/src/components/Header/index.js +++ b/client/src/components/Header/index.js @@ -1,5 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { bindActionCreators } from 'redux'; import Media from 'react-media'; import FCCSearch from 'react-freecodecamp-search'; @@ -9,6 +11,17 @@ import { Link } from '../helpers'; import './header.css'; +import { toggleDisplaySideNav } from '../layouts/redux'; + +const mapDispatchToProps = dispatch => + bindActionCreators({ toggleDisplaySideNav }, dispatch); + +const propTypes = { + disableSettings: PropTypes.bool, + showMobileSidenav: PropTypes.bool, + toggleDisplaySideNav: PropTypes.func +}; + class Header extends Component { constructor(props) { super(props); @@ -27,6 +40,9 @@ class Header extends Component { } toggleClass = () => { + if (this.props.showMobileSidenav) { + this.props.toggleDisplaySideNav(); + } this.setState({ isMenuOpened: !this.state.isMenuOpened }); @@ -35,7 +51,8 @@ class Header extends Component { handleClickOutside = event => { if ( this.state.isMenuOpened && - !this.menuButtonRef.current.contains(event.target) + !this.menuButtonRef.current.contains(event.target) && + !this.props.showMobileSidenav ) { this.toggleClass(); } @@ -48,7 +65,27 @@ class Header extends Component { }; render() { - const { disableSettings } = this.props; + const { disableSettings, showMobileSidenav } = this.props; + if (this.state.isMenuOpened && showMobileSidenav) { + return ( +
+ +
+ ); + } return (