/** * ============LICENSE_START======================================================================== * ONAP : ccsdk feature sdnr wt odlux * ================================================================================================= * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. * ============LICENSE_END========================================================================== */ import * as React from 'react'; import { Theme, lighten } from '@mui/material/styles'; import { WithStyles } from '@mui/styles'; import withStyles from '@mui/styles/withStyles'; import createStyles from '@mui/styles/createStyles'; import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip'; import Toolbar from '@mui/material/Toolbar'; import Typography from '@mui/material/Typography'; import DeleteIcon from '@mui/icons-material/Delete'; import MoreIcon from '@mui/icons-material/MoreVert'; import FilterListIcon from '@mui/icons-material/FilterList'; import MenuItem from '@mui/material/MenuItem'; import Menu from '@mui/material/Menu'; import { SvgIconProps } from '@mui/material/SvgIcon'; import { Button } from '@mui/material'; import { ColumnModel } from './columnModel'; import ShowColumnsDialog from './showColumnDialog' const styles = (theme: Theme) => createStyles({ root: { paddingRight: theme.spacing(1), }, highlight: theme.palette.mode === '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; tableId: string | null; customActionButtons?: { icon: React.ComponentType, tooltip?: string, ariaLabel: string, onClick: () => void, disabled?: boolean }[]; columns: ColumnModel<{}>[]; onHideColumns: (columnNames: string[]) => void onShowColumns: (columnNames: string[]) => void onToggleFilter: () => void; onExportToCsv: () => void; } class TableToolbarComponent extends React.Component { constructor(props: ITableToolbarComponentProps) { super(props); this.state = { anchorEl: null, anchorElDialog: null }; } private handleMenu = (event: React.MouseEvent) => { this.setState({ anchorEl: event.currentTarget }); }; private handleClose = () => { this.setState({ anchorEl: null }); }; private showColumnsDialog = (event: React.MouseEvent) =>{ this.setState({ anchorElDialog: this.state.anchorEl }); } private onCloseDialog = () =>{ this.setState({ anchorElDialog: null }); } render() { const { numSelected, classes } = this.props; const open = !!this.state.anchorEl; const buttonPrefix = this.props.tableId !== null ? this.props.tableId : 'table'; return ( <> 0 ? classes.highlight : ''} `} >
{numSelected && numSelected > 0 ? ( {numSelected} selected ) : ( {this.props.title || null} )}
{this.props.customActionButtons ? this.props.customActionButtons.map((action, ind) => ( action.onClick()} size="large"> )) : null} {numSelected && numSelected > 0 ? ( ) : ( { this.props.onToggleFilter && this.props.onToggleFilter() }} size="large"> )} { this.props.onExportToCsv(); this.handleClose()}}>Export as CSV { this.showColumnsDialog(e); this.handleClose()}}>Hide/show columns
); } } export const TableToolbar = withStyles(styles)(TableToolbarComponent);