Passed
Push — master ( f602d8...7b3414 )
by Huu-Phat
02:55 queued 11s
created

modules/home/components/nav/NavHeader.js   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 92
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 1
eloc 52
mnd 1
bc 1
fnc 0
dl 0
loc 92
ccs 13
cts 13
cp 1
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 10
1
import React from 'react'
2
import styled from 'styled-components/macro'
3
import PropTypes from 'prop-types'
4
import { Translate } from 'react-localize-redux'
5
import { GiHamburgerMenu } from 'react-icons/gi'
6
import { MdClose } from 'react-icons/md'
7
import NavLang from '~/modules/home/components/nav/NavLang'
8
import MobileContainer from '~/modules/home/components/common/container/MobileContainer'
9
import Row from 'react-bootstrap/Row'
10
import Col from 'react-bootstrap/Col'
11
12 2
const NavHeader = ({ isShowNavContent, switchNav }) => (
13 7
  <NavContainer>
14
    <MobileContainer>
15
      <Row fluid="true">
16
        <Col xs={6}>
17
          <NavLang />
18
        </Col>
19
        <Col xs={6}>
20
          <NavControl
21
            data-test-id="switch-nav-content"
22 2
            onClick={() => switchNav(!isShowNavContent)}
23
          >
24
            {!isShowNavContent ? <HamburgerIcon /> : <CloseIcon />}{' '}
25
            <Translate id="Menu" />
26
          </NavControl>
27
        </Col>
28
      </Row>
29
    </MobileContainer>
30
  </NavContainer>
31
)
32
33 2
NavHeader.propTypes = {
34
  isShowNavContent: PropTypes.bool,
35
  switchNav: PropTypes.func
36
}
37
38
export default NavHeader
39
40
const NavContainer = styled.div`
41
  width: 100%;
42
  position: absolute;
43
  z-index: 200;
44
  top: 0;
45
  left: 0;
46 5
  height: ${props => props.theme.navHeaderHeight};
47
  overflow: hidden;
48 5
  background-color: ${props => props.theme.colors.colorAccent};
49 5
  box-shadow: ${props => props.theme.extra.boxShadow};
50
`
51
52
const NavControl = styled.div`
53 5
  color: ${props => props.theme.colors.colorLight};
54 5
  line-height: ${props => props.theme.navHeaderHeight};
55
  text-align: right;
56
  border: none;
57
  transition: color 0.5s;
58
59
  @media screen and (max-width: 600px) {
60
    margin-left: 0;
61
  }
62
63
  &::before {
64
    display: inline-block;
65
    margin-right: 10px;
66 5
    color: ${props => props.theme.colors.colorLight};
67 5
    font-size: ${props => props.theme.fontSizes.XL};
68
    transition: color 0.5s;
69
70
    @media screen and (max-width: 600px) {
71
      margin-right: 0;
72
    }
73
  }
74
75
  &:hover,
76
  &:hover::before {
77 5
    color: ${props => props.theme.colors.colorDark};
78
  }
79
`
80
81
const HamburgerIcon = styled(GiHamburgerMenu)`
82
  display: inline;
83
  padding-bottom: 5px;
84
`
85
86
const CloseIcon = styled(MdClose)`
87
  display: inline;
88 1
  font-size: ${props => props.theme.fontSizes.XXL};
89
  font-weight: bolder;
90
  padding-bottom: 3px;
91
`
92