@6thquake/react-material
Version:
React components that implement Google's Material Design.
156 lines (140 loc) • 3.73 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import React, { Component } from 'react';
import Toolbar from '../../Toolbar';
import Search from '../../Search';
import IconButton from '../../IconButton';
import MoreVertIcon from '@material-ui/icons/MoreVert';
import GetApp from '@material-ui/icons/GetApp';
import { withStyles } from '../../styles';
import Menu from '../../Menu';
import MenuItem from '../../MenuItem';
import { darken, fade, lighten } from '../../styles/colorManipulator';
const styles = theme => ({
root: {
borderTop: `1px solid
${theme.palette.type === 'light' ? lighten(fade(theme.palette.divider, 1), 0.88) : darken(fade(theme.palette.divider, 1), 0.8)}`,
borderBottom: `1px solid
${theme.palette.type === 'light' ? lighten(fade(theme.palette.divider, 1), 0.88) : darken(fade(theme.palette.divider, 1), 0.8)}`
},
title: _extends({
flex: '0 0 auto'
}, theme.typography.title),
spacer: {
flex: '1 1 100%'
},
actions: {
display: 'flex'
},
// title: {
// flex: '0 0 auto',
// },
search: {},
searchInput: {
minWidth: '10em'
},
download: {
marginLeft: theme.spacing(2)
}
});
/**
* @ignore - internal component.
*/
var _ref = React.createElement(GetApp, null);
class TableToolbar extends Component {
constructor(props) {
super(props);
this.excelRef = React.createRef('excel');
this.onChange = e => {
const {
onSearch,
SearchProps
} = this.props;
const text = e.target.value;
this.setState({
searchText: text
});
onSearch && onSearch(text);
SearchProps.onChange && SearchProps.onChange(text);
};
this.handleClick = event => {
this.setState({
anchorEl: event.currentTarget
});
};
this.handleClose = () => {
this.setState({
anchorEl: null
});
};
this.handleItemClick = e => {
const {
download
} = this.props;
download && download();
};
this.state = {
anchorEl: null,
searchText: ''
};
}
componentDidMount() {}
render() {
const {
width,
classes,
searchable,
exportProps,
SearchProps,
title
} = this.props;
const {
anchorEl,
searchText
} = this.state;
if (SearchProps.floatRight === undefined) {
SearchProps.floatRight = true;
}
if (!searchable && !exportProps) {
return null;
}
return React.createElement("div", {
className: classes.root,
style: {
width
}
}, React.createElement(Toolbar, null, React.createElement("div", {
className: classes.title
}, title), React.createElement("div", {
className: classes.spacer
}), React.createElement("div", {
style: {
width: '80%',
float: 'right'
}
}, searchable && React.createElement(Search, _extends({
classes: {
input: classes.searchInput
}
}, SearchProps, {
value: searchText,
onChange: this.onChange
}))), exportProps && React.createElement("div", {
className: classes.download
}, React.createElement(IconButton, {
"aria-label": "More",
"aria-owns": anchorEl ? 'long-menu' : null,
"aria-haspopup": "true",
onClick: this.handleClick
}, _ref), React.createElement(Menu, {
id: "long-menu",
anchorEl: anchorEl,
open: Boolean(anchorEl),
onClose: this.handleClose
}, exportProps.type === 'csv' && React.createElement(MenuItem, {
onClick: this.handleItemClick
}, React.createElement("a", {
ref: this.excelRef
}, "CSV"))))));
}
}
export default withStyles(styles)(TableToolbar);