|
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
|
|
|
|