Skip to content
Snippets Groups Projects
SearchButtons.js 2.32 KiB
import React from 'react';
import PropTypes from 'prop-types';
import IconButton from '@material-ui/core/IconButton';
import Menu from '@material-ui/core/Menu';
import MenuItem from '@material-ui/core/MenuItem';
import MoreVertIcon from '@material-ui/icons/MoreVert';
import SearchIcon from '@material-ui/icons/Search';
import InputAdornment from '@material-ui/core/InputAdornment';
import {CSVLink} from 'react-csv';

class SearchButtons extends React.Component {
  state = {
    anchorEl: null,
  };

  handleClick = event => {
    this.setState({ anchorEl: event.currentTarget });
  };

  handleClose = () => {
    this.setState({ anchorEl: null });

  };

  handleClickSearchButton = () => {
    console.log('places');
  };

  handleClickStats = () => {
    this.handleClose();
    this.props.updateResultFormat('stats');
  }

  handleClickTable = () => {
    this.handleClose();
    this.props.updateResultFormat('table');
  }

  handleMouseDownButton = (event) => {
    event.preventDefault();
  };

  render() {
    const { anchorEl } = this.state;

    return (
      <InputAdornment position="end">
        <IconButton
          aria-label="Search places"
          onClick={this.handleClickSearchButton}
          onMouseDown={this.handleMouseDownButton}
        >
          <SearchIcon />
        </IconButton>
        <IconButton
          aria-label="More"
          aria-owns={anchorEl ? 'long-menu' : null}
          aria-haspopup="true"
          onClick={this.handleClick}
        >
          <MoreVertIcon />
        </IconButton>
        <Menu
          id="long-menu"
          anchorEl={anchorEl}
          open={Boolean(anchorEl)}
          onClose={this.handleClose}
        >
          <MenuItem
            key='csv'
            onClick={this.handleClose}>
            <CSVLink data={this.props.search.results}>Results as CSV</CSVLink>
          </MenuItem>
          <MenuItem
            key='stats'
            onClick={this.handleClickStats}>
            Results by place type
          </MenuItem>
          <MenuItem
            key='list'
            onClick={this.handleClickTable}>
            Results as a table
          </MenuItem>
        </Menu>
      </InputAdornment>
    );
  }
}

SearchButtons.propTypes = {
  search: PropTypes.object.isRequired,
  updateResultFormat: PropTypes.func.isRequired
};

export default SearchButtons;