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;