Locaft-backend/src/components/NavBar.js

142 lines
3.2 KiB
JavaScript
Raw Normal View History

2021-01-20 09:05:30 -08:00
import React, { useState,useContext, useRef, useCallback } from 'react';
2020-12-07 09:49:14 -08:00
import { Link } from "react-router-dom";
2020-11-21 09:27:17 -08:00
import '../navbar.css';
2020-11-30 08:56:17 -08:00
import UserContext from "../context/UserContext";
2021-01-20 09:05:30 -08:00
import styled,{ css } from 'styled-components';
2020-11-20 09:26:49 -08:00
2021-01-20 09:05:30 -08:00
const Header = styled.header`
background: #66bfbf;
position: absolute;
top: 0;
left: 0;
width: 100%;
display: flex;
justify-content: space-evenly;
align-items: center;
transition: 0.6s;
padding: 10px 15px;
z-index: 100000;
font-family: Ubuntu;
${ props => props.sticky && css`
padding: 3px 50px;
background: red;
opacity: 0.85;
`}
& .logo {
font-family: "Ubuntu";
font-size: 2rem;
font-weight: bold;
position: relative;
color: #fff;
text-decoration: none;
text-transform: lowercase;
padding-left: 100px;
transition: 0.6s;
}
`;
const List = styled.ul`
${Header};
& li {
position: relative;
list-style:none;
}
`;
const RefCallback = () => {
const HeaderRef = useRef(null);
const setRef = useCallback(node => {
if(HeaderRef.current){
}
if( node ){
node.addEventListener()
}
})
}
2020-11-29 09:05:56 -08:00
export default function NavBar() {
2020-11-30 08:56:17 -08:00
const { userData, setUserData } = useContext(UserContext);
2021-01-20 09:05:30 -08:00
const [ isSticky, setSticky ] = useState(false);
2020-11-30 08:56:17 -08:00
const logout = () => {
setUserData({
token: undefined,
user: undefined,
});
localStorage.setItem("auth-token", "");
};
2021-01-20 09:05:30 -08:00
2020-12-09 08:58:29 -08:00
window.addEventListener("scroll", () => {
2021-01-20 09:05:30 -08:00
//header.classList.toggle("sticky", window.scrollY > 1);
if(window.scrollY > 1){
setSticky(isSticky => !isSticky);
console.log(isSticky);
}
2020-12-09 08:58:29 -08:00
});
2021-01-20 09:05:30 -08:00
2020-11-30 08:56:17 -08:00
return (
2020-12-06 08:59:40 -08:00
<div className="navbar">
2021-01-20 09:05:30 -08:00
<Header sticky = {isSticky} >
2020-11-30 08:56:17 -08:00
<input type="checkbox" id="check" />
2020-12-06 08:59:40 -08:00
<label htmlFor="check" className="checkbtn">
<i className="fas fa-bars" id="btn"></i>
2020-11-30 08:56:17 -08:00
</label>
2020-12-07 09:49:14 -08:00
<a href="/" className="logo">locaft</a>
2020-11-30 08:56:17 -08:00
<ul>
2020-12-07 09:49:14 -08:00
<li><a href="/">Home</a></li>
<li><a href="/#about-us">About</a></li>
<li><a href="/#features">Services</a></li>
<li><a href="/#footer">Contact us</a></li>
2020-11-30 08:56:17 -08:00
{userData.user ? (
2020-12-21 08:27:28 -08:00
<React.Fragment>
2020-12-07 09:49:14 -08:00
<li><Link onClick={logout}>{userData.user.username}</Link></li>
2020-12-21 08:27:28 -08:00
<li class="nr_li dd_main">
<img src="https://i.imgur.com/2QKIaJ5.png" alt="profile_img" />
<div class="dd_menu">
<div class="dd_left">
<ul>
<li><i class="fas fa-cog"></i></li>
<li><i class="fas fa-sign-out-alt"></i></li>
</ul>
</div>
<div class="dd_right">
<ul>
<li>Settings</li>
<li>Logout</li>
</ul>
</div>
</div>
</li>
<li class="nr_li">
<i class="fas fa-envelope-open-text"></i>
</li>
</React.Fragment>
2020-11-30 08:56:17 -08:00
) : (
2020-12-04 08:38:55 -08:00
<React.Fragment>
2020-12-07 09:49:14 -08:00
<li><Link to="/user/register">Register</Link></li>
<li><Link to="/user/login">login</Link></li>
2020-12-04 08:38:55 -08:00
</React.Fragment>
2020-11-30 08:56:17 -08:00
)}
</ul>
2021-01-20 09:05:30 -08:00
</Header>
2020-11-30 08:56:17 -08:00
</div>
)
}
2020-11-29 09:05:56 -08:00