1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from 'react';
6 import { WithStyles, StyleRulesCallback, withStyles, IconButton, Paper, List, Checkbox, ListItemText, ListItem, Tooltip } from '@material-ui/core';
7 import MenuIcon from "@material-ui/icons/Menu";
8 import { DataColumn } 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';
12 import { ArvadosTheme } from "common/custom-theme";
13 import { ResourceName } from 'views-components/data-explorer/renderers';
15 interface ColumnSelectorDataProps {
16 columns: DataColumns<any>;
17 onColumnToggle: (column: DataColumn<any>) => void;
21 type CssRules = "checkbox";
23 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
30 export type ColumnSelectorProps = ColumnSelectorDataProps & WithStyles<CssRules>;
32 export const ColumnSelector = withStyles(styles)(
33 ({ columns, onColumnToggle, classes }: ColumnSelectorProps) =>
34 {console.log('COLUMN_SELECTOR',columns)
35 columns = [...columns, {
38 configurable: true, filters:{}, render: (uuid)=><ResourceName uuid='uuid'/>
41 console.log('COLUMN_SELECTOR',columns)
42 return <Popover triggerComponent={ColumnSelectorTrigger}>
46 .filter(column => column.configurable)
47 .map((column, index) =>
51 onClick={() => onColumnToggle(column)}>
55 checked={column.selected}
56 className={classes.checkbox} />
67 export const ColumnSelectorTrigger = (props: IconButtonProps) =>
68 <Tooltip disableFocusListener title="Select columns">
69 <IconButton {...props}>
70 <MenuIcon aria-label="Select columns" />