Advertisement
silaghipaul

Untitled

Jul 23rd, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as React from 'react';
  2. import styled from 'styled-components';
  3. import NavbarItem from './NavbarItem';
  4. import { Route } from 'react-router-dom';
  5. import ApiClient from '../apiClient';
  6.  
  7. const Aside = styled.aside`
  8.   position: relative;
  9.   width: 0;
  10.   z-index: 10;
  11. `;
  12. const Ul = styled.ul`
  13.   list-style: none;
  14.   margin: 0;
  15.   padding: 0;
  16. `;
  17. const Nav = styled.nav`
  18.   width: 100%;
  19. `;
  20. const NavWrapper = styled.div`
  21.   align-items: center;
  22.   background-color: #d7d7db;
  23.   display: flex;
  24.   flex-direction: column;
  25.   height: 100%;
  26.   ${props => props.collapsed && 'transform: translateX(-100%);'}
  27.   transition: transform 0.4s ease-out;
  28.   width: 270px;
  29. `;
  30. const Span = styled.span`
  31.   position: absolute;
  32.   left: 0;
  33.   top: 50%;
  34.   transform: translateY(-50%);
  35. `;
  36.  
  37. class Navbar extends React.Component {
  38.   constructor(props) {
  39.     super(props);
  40.     this.state = {
  41.       targets: null,
  42.       collapsed: false
  43.     };
  44.   }
  45.  
  46.   componentDidMount() {
  47.     ApiClient.get('/data/targets.json').then(response => {
  48.       const parsedResponse = response.targets.map(target => {
  49.         return {
  50.           path: `/${target.name.toLowerCase()}`,
  51.           label: `${target.name}`,
  52.           icon: `/images/${target.icon}`
  53.         };
  54.       });
  55.       this.setState({ targets: parsedResponse });
  56.     });
  57.   }
  58.  
  59.   handleToggleCollapsed = () => {
  60.       this.setState({
  61.         collapsed: !this.state.collapsed
  62.       });
  63.     };
  64.  
  65.   render() {
  66.     return (
  67.       <Aside className={this.props.className}>
  68.         <Span onClick={this.handleToggleCollapsed}> >> </Span>
  69.         <NavWrapper collapsed>
  70.           <Nav>
  71.             <Ul>
  72.               <Route path="/runs">
  73.                 <NavbarItem label="All Runs" basePath="/runs" />
  74.               </Route>
  75.  
  76.               <Route path="/new">
  77.                 <NavbarItem label="Create New Run" basePath="/new" sublinks={this.state.targets} />
  78.               </Route>
  79.             </Ul>
  80.           </Nav>
  81.         </NavWrapper>
  82.       </Aside>
  83.     );
  84.   }
  85. }
  86.  
  87. export default Navbar;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement