Skip to content
Snippets Groups Projects
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);