docs(website): convert docs mobile nav from select to nav element and list (#1696)

* website: redo mobile nav to use Link and be rid of select input

* fix react className prop

* add zebapy to contributors

* website: upgrade gatsby deps to release candidate

* fix lint
This commit is contained in:
Zeb Pykosz
2018-08-31 14:25:42 -04:00
committed by Caleb
parent 0596904e0b
commit 9253506791
5 changed files with 893 additions and 952 deletions

View File

@ -1,26 +1,49 @@
import React, { Component } from 'react';
import { Link } from 'gatsby';
class MobileNav extends Component {
handleChange = event => {
this.props.history.push(event.target.value);
state = {
isOpen: false,
};
toggleNav = () => {
this.setState({
isOpen: !this.state.isOpen,
});
};
render() {
const { items } = this.props;
const { isOpen } = this.state;
return (
<div className="mobile docs-nav">
<select className="btn-primary" onChange={this.handleChange}>
<option>Select A Topic</option>
{items.map(item => (
<optgroup label={item.title} key={item.title}>
{item.group.edges.map(({ node }) => (
<option value={node.fields.slug} key={node.fields.slug} className="nav-link">
{node.frontmatter.title}
</option>
<div className="mobile-docs-nav">
<button className="btn-primary mobile-docs-nav-btn" onClick={this.toggleNav}>
{isOpen ? <span>&times;</span> : <span>&#9776;</span>} {isOpen ? 'Hide' : 'Show'}{' '}
Navigation
</button>
{isOpen && (
<nav className="mobile-docs-nav-content">
<ul className="mobile-docs-nav-list">
{items.map(item => (
<li key={item.title} className="mobile-docs-nav-item">
{item.title}
<ul className="mobile-docs-nav-list">
{item.group.edges.map(({ node }) => (
<li key={node.fields.slug} className="mobile-docs-nav-item">
<Link
to={node.fields.slug}
className="mobile-docs-nav-link"
onClick={this.toggleNav}
>
{node.frontmatter.title}
</Link>
</li>
))}
</ul>
</li>
))}
</optgroup>
))}
</select>
</ul>
</nav>
)}
</div>
);
}