1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { WithStyles, StyleRulesCallback, Theme, withStyles, IconButton, Paper, List, Checkbox, ListItemText, ListItem } from '@material-ui/core';
7 import MenuIcon from "@material-ui/icons/Menu";
8 import { Column, isColumnConfigurable } from '../column';
9 import Popover from "../../popover/popover";
10 import { IconButtonProps } from '@material-ui/core/IconButton';
12 export interface ColumnsConfiguratorProps {
13 columns: Array<Column<any>>;
14 onColumnToggle: (column: Column<any>) => void;
17 const ColumnsConfigurator: React.SFC<ColumnsConfiguratorProps & WithStyles<CssRules>> = ({ columns, onColumnToggle, classes }) => {
19 <Popover triggerComponent={ColumnsConfiguratorTrigger}>
24 .filter(isColumnConfigurable)
25 .map((column, index) => (
29 onClick={() => onColumnToggle(column)}
34 checked={column.selected}
35 className={classes.checkbox}
49 const ColumnsConfiguratorTrigger: React.SFC<IconButtonProps> = (props) => (
50 <IconButton {...props}>
55 type CssRules = "checkbox";
57 const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
64 export default withStyles(styles)(ColumnsConfigurator);