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
|
5 |
|
<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
|
3 |
|
height: ${props => props.theme.navHeaderHeight}; |
47
|
|
|
overflow: hidden; |
48
|
3 |
|
background-color: ${props => props.theme.colors.colorAccent}; |
49
|
3 |
|
box-shadow: ${props => props.theme.extra.boxShadow}; |
50
|
|
|
` |
51
|
|
|
|
52
|
|
|
const NavControl = styled.div` |
53
|
3 |
|
color: ${props => props.theme.colors.colorDark}; |
54
|
3 |
|
line-height: ${props => props.theme.navHeaderHeight}; |
55
|
|
|
text-align: right; |
56
|
|
|
border: none; |
57
|
|
|
transition: color 0.5s; |
58
|
|
|
cursor: pointer; |
59
|
|
|
|
60
|
|
|
@media screen and (max-width: 768px) { |
61
|
|
|
visibility: hidden; |
62
|
|
|
} |
63
|
|
|
|
64
|
|
|
&::before { |
65
|
|
|
display: inline-block; |
66
|
|
|
margin-right: 10px; |
67
|
3 |
|
color: ${props => props.theme.colors.colorDark}; |
68
|
3 |
|
font-size: ${props => props.theme.fontSizes.XL}; |
69
|
|
|
transition: color 0.5s; |
70
|
|
|
|
71
|
|
|
@media screen and (max-width: 600px) { |
72
|
|
|
margin-right: 0; |
73
|
|
|
} |
74
|
|
|
} |
75
|
|
|
|
76
|
|
|
&:hover, |
77
|
|
|
&:hover::before { |
78
|
3 |
|
color: ${props => props.theme.colors.colorDark}; |
79
|
|
|
} |
80
|
|
|
` |
81
|
|
|
|
82
|
|
|
const HamburgerIcon = styled(GiHamburgerMenu)` |
83
|
|
|
display: inline; |
84
|
|
|
padding-bottom: 5px; |
85
|
|
|
` |
86
|
|
|
|
87
|
|
|
const CloseIcon = styled(MdClose)` |
88
|
|
|
display: inline; |
89
|
|
|
font-size: ${props => props.theme.fontSizes.XXL}; |
90
|
|
|
font-weight: bolder; |
91
|
|
|
padding-bottom: 3px; |
92
|
|
|
` |
93
|
|
|
|