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 { DataColumn, isColumnConfigurable } from '../data-table/data-column';
9 import Popover from "../popover/popover";
10 import { IconButtonProps } from '@material-ui/core/IconButton';
11 import { DataColumns } from '../data-table/data-table';
13 export interface ColumnSelectorProps {
14 columns: DataColumns<any>;
15 onColumnToggle: (column: DataColumn<any>) => void;
18 const ColumnSelector: React.SFC<ColumnSelectorProps & WithStyles<CssRules>> = ({ columns, onColumnToggle, classes }) =>
19 <Popover triggerComponent={ColumnSelectorTrigger}>
23 .filter(isColumnConfigurable)
24 .map((column, index) => (
28 onClick={() => onColumnToggle(column)}>
32 checked={column.selected}
33 className={classes.checkbox} />
43 export const ColumnSelectorTrigger: React.SFC<IconButtonProps> = (props) =>
44 <IconButton {...props}>
48 type CssRules = "checkbox";
50 const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
57 export default withStyles(styles)(ColumnSelector);