Forked from
KSZK / DevTeam / kszkepzes / old / kszkepzes-frontend
373 commits behind the upstream repository.
-
Barnabás Czémán authoredBarnabás Czémán authored
Header.js 3.24 KiB
import React, { Component } from 'react';
import { NavLink, Link } from 'react-router-dom';
import {
Menu,
Container,
Button,
Segment,
Visibility,
Image,
} from 'semantic-ui-react';
import { connect } from 'react-redux';
import { getUserData, logout } from '../actions';
import KSZKlogo from './images/kszk_logo.svg';
const FixedMenu = ({ user }) => (
<Menu fixed='top' size='large' pointing>
<Container>
<Menu.Item as={NavLink} to='/home'>Főoldal</Menu.Item>
<Menu.Item as={NavLink} to='/news'>Hírek</Menu.Item>
<Menu.Item as={NavLink} to='/circles'>Köreink</Menu.Item>
<Menu.Item as={NavLink} to='/trainers'>Képzők</Menu.Item>
<Menu.Item as={NavLink} to='/schedule'>Ütemterv</Menu.Item>
<Menu.Menu position='right'>
<Menu.Item className='item'>
{
user.id ?
<Button.Group>
<Button primary as={Link} to='/profile'>Profilom</Button>
<Button onClick={() => this.props.logout()} icon='sign out' />
</Button.Group>
:
<Button href='/api/v1/login/authsch/'>Bejelentkezés</Button>
}
</Menu.Item>
</Menu.Menu>
</Container>
</Menu>
);
class Header extends Component {
constructor(props) {
super(props);
this.state = {
visible: false,
};
}
componentWillMount() {
this.props.getUserData();
}
hideFixedMenu() {
this.setState({ visible: false });
}
showFixedMenu() {
this.setState({ visible: true });
}
render() {
const { visible } = this.state;
return (
<div>
{visible ? <FixedMenu user={this.props.user} /> : null}
<Visibility
onBottomPassed={() => this.showFixedMenu()}
onBottomVisible={() => this.hideFixedMenu()}
once={false}
>
<Segment inverted textAlign='center' vertical>
<Container>
<Menu inverted secondary size='large'>
<Menu.Item as={NavLink} to='/home'>
<Image
size='mini'
src={KSZKlogo}
style={{ marginRight: '1.5em' }}
/>
Főoldal
</Menu.Item>
<Menu.Item as={NavLink} to='/news'>Hírek</Menu.Item>
<Menu.Item as={NavLink} to='/circles'>Köreink</Menu.Item>
<Menu.Item as={NavLink} to='/trainers'>Képzők</Menu.Item>
<Menu.Item as={NavLink} to='/schedule'>Ütemterv</Menu.Item>
<Menu.Item position='right'>
{
this.props.user.id ?
<Button.Group>
<Button inverted as={Link} to='/profile'>Profil</Button>
<Button onClick={() => this.props.logout()} icon='sign out' />
</Button.Group>
:
<Button as='a' href='/api/v1/login/authsch/' inverted>Bejelentkezés</Button>
}
</Menu.Item>
</Menu>
</Container>
</Segment>
</Visibility>
</div>
);
}
}
const mapStateToProps = ({ user }) => ({
user,
});
export default connect(mapStateToProps, { getUserData, logout })(Header);