import * as React from 'react'; import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles'; import IconButton from '@material-ui/core/IconButton'; import Tooltip from '@material-ui/core/Tooltip'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import DeleteIcon from '@material-ui/icons/Delete'; import MoreIcon from '@material-ui/icons/MoreVert'; import FilterListIcon from '@material-ui/icons/FilterList'; import MenuItem from '@material-ui/core/MenuItem'; import Menu from '@material-ui/core/Menu'; import { lighten } from '@material-ui/core/styles/colorManipulator'; import { SvgIconProps } from '@material-ui/core/SvgIcon/SvgIcon'; const styles = (theme: Theme) => createStyles({ root: { paddingRight: theme.spacing.unit, }, highlight: theme.palette.type === 'light' ? { color: theme.palette.secondary.main, backgroundColor: lighten(theme.palette.secondary.light, 0.85), } : { color: theme.palette.text.primary, backgroundColor: theme.palette.secondary.dark, }, spacer: { flex: '1 1 100%', }, actions: { color: theme.palette.text.secondary, display: "flex", flex: "auto", flexDirection: "row" }, title: { flex: '0 0 auto', }, menuButton: { marginLeft: -12, marginRight: 20, }, }); interface ITableToolbarComponentProps extends WithStyles { numSelected: number | null; title?: string; customActionButtons?: { icon: React.ComponentType, tooltip?: string, onClick: () => void }[]; onToggleFilter: () => void; onExportToCsv: () => void; } class TableToolbarComponent extends React.Component { constructor(props: ITableToolbarComponentProps) { super(props); this.state = { anchorEl: null }; } private handleMenu = (event: React.MouseEvent) => { this.setState({ anchorEl: event.currentTarget }); }; private handleClose = () => { this.setState({ anchorEl: null }); }; render() { const { numSelected, classes } = this.props; const open = !!this.state.anchorEl; return ( 0 ? classes.highlight : '' } ` } >
{ numSelected && numSelected > 0 ? ( { numSelected } selected ) : ( { this.props.title || null } ) }
{ this.props.customActionButtons ? this.props.customActionButtons.map((action, ind) =>( action.onClick() }> )) : null } { numSelected && numSelected > 0 ? ( ) : ( { this.props.onToggleFilter && this.props.onToggleFilter() } }> ) } Export as CSV
); } }; export const TableToolbar = withStyles(styles)(TableToolbarComponent);