frontend/src/components/Topbar.tsx

134 lines
3.2 KiB
TypeScript
Raw Normal View History

2020-08-17 23:56:34 +02:00
import React, { useState, MouseEvent } from 'react';
import Transfer from '../assets/transfer.png';
import Search from '../assets/search.svg';
import CloseIcon from '../assets/close.svg';
2020-10-30 00:42:40 +01:00
import ProfileIcon from '../assets/account.svg';
import { Profile } from './Profile';
2020-08-17 23:56:34 +02:00
import { Dropdown } from './Dropdown';
2020-10-30 00:42:40 +01:00
import PolishIcon from '../assets/poland.svg';
import EnglishIcon from '../assets/united-kingdom.svg';
import styled from 'styled-components/macro';
2020-08-20 18:14:28 +02:00
const Topbar = styled.div`
2020-10-30 00:42:40 +01:00
background-color:#ECEEF4;
height: 80px;
padding: 5px;
font-size: 24px;
font-weight: bold;
display: flex;
justify-content: space-between;
`;
2020-10-30 00:42:40 +01:00
const LogoWrapper = styled.div`
display: flex;
align-items: center;
flex-grow: 0.5;
justify-content: flex-start;
`;
2020-10-30 00:42:40 +01:00
const Logo = styled.img`
flex-grow: 1;
width: 70px;
height: 70px;
@media only screen and (max-width: 670px) {
width: 60px;
height: 60px;
}
`;
2020-10-30 00:42:40 +01:00
const Text = styled.div`
flex-grow: 2;
@media only screen and (max-width: 670px) {
display: none;
}
`;
const InputWrapper = styled.div`
display: flex;
2020-10-30 00:42:40 +01:00
align-items: center;
justify-content: center;
margin: 10px;
flex-grow: 9;
background-color:#f2f4f7;
border-radius: 5px;
`;
2020-10-30 00:42:40 +01:00
const Input = styled.div`
width: 100%;
`;
2020-10-30 00:42:40 +01:00
const InputIcon = styled.img`
width: 30px;
@media only screen and (max-width: 670px) {
width: 25px;
}
2020-08-20 18:14:28 +02:00
cursor: pointer;
`;
2020-10-30 00:42:40 +01:00
const IconWrapper = styled.div`
display: flex;
align-items: center;
justify-content: space-around;
flex-grow: 0.5;
`;
const Icon = styled.img`
width: 40px;
cursor: pointer;
@media only screen and (max-width: 670px) {
width: 35px;
}
`;
2020-10-30 00:42:40 +01:00
const VerticalLine = styled.div`
border-left: 1px solid black;
height: 30px;
`
interface TopbarProps {
2020-08-17 23:56:34 +02:00
handleTransfer: (e: MouseEvent) => void;
}
2020-08-20 18:14:28 +02:00
export default function ({ handleTransfer }: TopbarProps) {
const [clearInput, setClearInput] = useState(false);
const [isPolish, setIsPolish] = useState(false);
const [anchorEl, setAnchorEl] = useState<HTMLImageElement | null>(null);
2020-08-17 23:56:34 +02:00
const onLangChange = () => setIsPolish(!isPolish);
2020-08-17 23:56:34 +02:00
const handleProfile = (event: MouseEvent<HTMLImageElement>) => setAnchorEl(event.currentTarget);
const handleClose = () => setAnchorEl(null);
2020-08-20 18:14:28 +02:00
const handleClearInput = () => setClearInput(!clearInput);
return (
2020-08-20 18:14:28 +02:00
<Topbar>
2020-10-30 00:42:40 +01:00
<LogoWrapper>
<Logo alt="logo" src="https://plannaplan.pl/img/logo.svg" />
<Text> plan na plan </Text>
</LogoWrapper>
<InputWrapper>
<Input>
<Dropdown clearInput={clearInput} handleClearInput={handleClearInput} />
2020-10-30 00:42:40 +01:00
</Input>
<InputIcon alt="close" src={CloseIcon} onClick={handleClearInput} />
<VerticalLine/>
<InputIcon alt="search" src={Search} />
</InputWrapper>
<IconWrapper>
{/* <Icon alt="transfer" src={Transfer} onClick={handleTransfer} /> */}
<Icon alt="change_language" src={isPolish ? EnglishIcon : PolishIcon} onClick={onLangChange} />
<Icon alt="profile" src={ProfileIcon} onClick={handleProfile} />
2020-08-17 23:56:34 +02:00
<Profile anchorEl={anchorEl} handleClose={handleClose} />
2020-10-30 00:42:40 +01:00
<span>nasz student</span>
</IconWrapper>
2020-08-20 18:14:28 +02:00
</Topbar>
);
}