Apply code formatting and naming according to code review
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 18 Jun 2018 09:40:59 +0000 (11:40 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 18 Jun 2018 09:40:59 +0000 (11:40 +0200)
Feature #13601

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/common/formatters.ts [moved from src/components/data-explorer/formatters.ts with 69% similarity]
src/components/data-explorer/data-explorer.tsx
src/components/data-table/column-selector/column-selector.test.tsx [moved from src/components/data-table/columns-configurator/columns-configurator.test.tsx with 61% similarity]
src/components/data-table/column-selector/column-selector.tsx [new file with mode: 0644]
src/components/data-table/columns-configurator/columns-configurator.tsx [deleted file]
src/components/data-table/data-column.ts [moved from src/components/data-table/column.ts with 72% similarity]
src/components/data-table/data-table.test.tsx
src/components/data-table/data-table.tsx
src/components/data-table/index.ts

similarity index 69%
rename from src/components/data-explorer/formatters.ts
rename to src/common/formatters.ts
index 5862a868d9776e99217eee92833460c1ecdfe7df..1d9a52012445b1478c9dc3b4d37197dd9237bc74 100644 (file)
@@ -7,10 +7,12 @@ export const formatDate = (isoDate: string) => {
     return date.toLocaleString();
 };
 
-export const formatFileSize = (size: number) => {
-    for (const { base, unit } of fileSizes) {
-        if (size >= base) {
-            return `${(size / base).toFixed()} ${unit}`;
+export const formatFileSize = (size?: number) => {
+    if (typeof size === "number") {
+        for (const { base, unit } of fileSizes) {
+            if (size >= base) {
+                return `${(size / base).toFixed()} ${unit}`;
+            }
         }
     }
     return "";
index ada01597888c83a8bf117d842d580c2ed70a793d..2c2c56e9998986cfc0078bce0ccb61811b071032 100644 (file)
@@ -3,12 +3,12 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import * as React from 'react';
-import { DataTable, DataTableProps, Column, ColumnsConfigurator } from "../../components/data-table";
+import { DataTable, DataTableProps, DataColumn, ColumnSelector } from "../../components/data-table";
 import { Typography, Grid, ListItem, Divider, List, ListItemIcon, ListItemText } from '@material-ui/core';
 import IconButton, { IconButtonProps } from '@material-ui/core/IconButton';
 import MoreVertIcon from "@material-ui/icons/MoreVert";
 import Popover from '../popover/popover';
-import { formatFileSize, formatDate } from './formatters';
+import { formatFileSize, formatDate } from '../../common/formatters';
 import { DataItem } from './data-item';
 
 interface DataExplorerProps {
@@ -19,42 +19,40 @@ interface DataExplorerProps {
 type DataExplorerState = Pick<DataTableProps<DataItem>, "columns">;
 
 class DataExplorer extends React.Component<DataExplorerProps, DataExplorerState> {
-
     state: DataExplorerState = {
         columns: [
             {
-                header: "Name",
+                name: "Name",
                 selected: true,
                 render: item => this.renderName(item)
             },
             {
-                header: "Status",
+                name: "Status",
                 selected: true,
                 render: item => renderStatus(item.status)
             },
             {
-                header: "Type",
+                name: "Type",
                 selected: true,
                 render: item => renderType(item.type)
             },
             {
-                header: "Owner",
+                name: "Owner",
                 selected: true,
                 render: item => renderOwner(item.owner)
             },
             {
-                header: "File size",
+                name: "File size",
                 selected: true,
                 render: (item) => renderFileSize(item.fileSize)
             },
             {
-                header: "Last modified",
+                name: "Last modified",
                 selected: true,
                 render: item => renderDate(item.lastModified)
             },
             {
-                header: "Actions",
-                key: "Actions",
+                name: "Actions",
                 selected: true,
                 configurable: false,
                 renderHeader: () => this.renderActionsHeader(),
@@ -64,54 +62,42 @@ class DataExplorer extends React.Component<DataExplorerProps, DataExplorerState>
     };
 
     render() {
-        return (
-            <DataTable
-                columns={this.state.columns}
-                items={this.props.items}
-            />
-        );
+        return <DataTable
+            columns={this.state.columns}
+            items={this.props.items} />;
     }
 
-    toggleColumn = (column: Column<DataItem>) => {
+    toggleColumn = (column: DataColumn<DataItem>) => {
         const index = this.state.columns.indexOf(column);
         const columns = this.state.columns.slice(0);
         columns.splice(index, 1, { ...column, selected: !column.selected });
         this.setState({ columns });
     }
 
-    renderActionsHeader = () => {
-        return (
-            <Grid container justify="flex-end">
-                <ColumnsConfigurator
-                    columns={this.state.columns}
-                    onColumnToggle={this.toggleColumn}
-                />
+    renderActionsHeader = () =>
+        <Grid container justify="flex-end">
+            <ColumnSelector
+                columns={this.state.columns}
+                onColumnToggle={this.toggleColumn} />
+        </Grid>
+
+    renderName = (item: DataItem) =>
+        <Grid
+            container
+            alignItems="center"
+            wrap="nowrap"
+            spacing={16}
+            onClick={() => this.props.onItemClick(item)}>
+            <Grid item>
+                {renderIcon(item)}
             </Grid>
-        );
-    }
+            <Grid item>
+                <Typography color="primary">
+                    {item.name}
+                </Typography>
+            </Grid>
+        </Grid>
 
-    renderName = (item: DataItem) => {
-        return (
-            (
-                <Grid
-                    container
-                    alignItems="center"
-                    wrap="nowrap"
-                    spacing={16}
-                    onClick={() => this.props.onItemClick(item)}
-                >
-                    <Grid item>
-                        {renderIcon(item)}
-                    </Grid>
-                    <Grid item>
-                        <Typography color="primary">
-                            {item.name}
-                        </Typography>
-                    </Grid>
-                </Grid>
-            )
-        );
-    }
 }
 
 const renderIcon = (dataItem: DataItem) => {
@@ -125,88 +111,66 @@ const renderIcon = (dataItem: DataItem) => {
     }
 };
 
-const renderDate = (date: string) => {
-    return (
-        <Typography noWrap>
-            {formatDate(date)}
-        </Typography>
-    );
-};
-
-const renderFileSize = (fileSize?: number) => {
-    return (
-        <Typography noWrap>
-            {typeof fileSize === "number" ? formatFileSize(fileSize) : "-"}
-        </Typography>
-    );
-};
-
-const renderOwner = (owner: string) => {
-    return (
-        <Typography noWrap color="primary">
-            {owner}
-        </Typography>
-    );
-};
-
-const renderType = (type: string) => {
-    return (
-        <Typography noWrap>
-            {type}
-        </Typography>
-    );
-};
-
-const renderStatus = (status?: string) => {
-    return (
-        <Typography noWrap align="center">
-            {status || "-"}
-        </Typography>
-    );
-};
-
-const renderItemActions = () => {
-    return (
-        <Grid container justify="flex-end">
-            <Popover triggerComponent={ItemActionsTrigger}>
-                <List dense>
-                    {[
-                        {
-                            icon: "fas fa-users",
-                            label: "Share"
-                        },
-                        {
-                            icon: "fas fa-sign-out-alt",
-                            label: "Move to"
-                        },
-                        {
-                            icon: "fas fa-star",
-                            label: "Add to favourite"
-                        },
-                        {
-                            icon: "fas fa-edit",
-                            label: "Rename"
-                        },
-                        {
-                            icon: "fas fa-copy",
-                            label: "Make a copy"
-                        },
-                        {
-                            icon: "fas fa-download",
-                            label: "Download"
-                        }].map(renderAction)
-                    }
-                    < Divider />
-                    {
-                        renderAction({ icon: "fas fa-trash-alt", label: "Remove" })
-                    }
-                </List>
-            </Popover>
-        </Grid>
-    );
-};
-
-const renderAction = (action: { label: string, icon: string }, index?: number) => (
+const renderDate = (date: string) =>
+    <Typography noWrap>
+        {formatDate(date)}
+    </Typography>;
+
+const renderFileSize = (fileSize?: number) =>
+    <Typography noWrap>
+        {formatFileSize(fileSize)}
+    </Typography>;
+
+const renderOwner = (owner: string) =>
+    <Typography noWrap color="primary">
+        {owner}
+    </Typography>;
+
+const renderType = (type: string) =>
+    <Typography noWrap>
+        {type}
+    </Typography>;
+
+const renderStatus = (status?: string) =>
+    <Typography noWrap align="center">
+        {status || "-"}
+    </Typography>;
+
+const renderItemActions = () =>
+    <Grid container justify="flex-end">
+        <Popover triggerComponent={ItemActionsTrigger}>
+            <List dense>
+                {[{
+                    icon: "fas fa-users",
+                    label: "Share"
+                },
+                {
+                    icon: "fas fa-sign-out-alt",
+                    label: "Move to"
+                },
+                {
+                    icon: "fas fa-star",
+                    label: "Add to favourite"
+                },
+                {
+                    icon: "fas fa-edit",
+                    label: "Rename"
+                },
+                {
+                    icon: "fas fa-copy",
+                    label: "Make a copy"
+                },
+                {
+                    icon: "fas fa-download",
+                    label: "Download"
+                }].map(renderAction)}
+                < Divider />
+                {renderAction({ icon: "fas fa-trash-alt", label: "Remove" })}
+            </List>
+        </Popover>
+    </Grid>;
+
+const renderAction = (action: { label: string, icon: string }, index?: number) =>
     <ListItem button key={index}>
         <ListItemIcon>
             <i className={action.icon} />
@@ -214,13 +178,11 @@ const renderAction = (action: { label: string, icon: string }, index?: number) =
         <ListItemText>
             {action.label}
         </ListItemText>
-    </ListItem>
-);
+    </ListItem>;
 
-const ItemActionsTrigger: React.SFC<IconButtonProps> = (props) => (
+const ItemActionsTrigger: React.SFC<IconButtonProps> = (props) =>
     <IconButton {...props}>
         <MoreVertIcon />
-    </IconButton>
-);
+    </IconButton>;
 
 export default DataExplorer;
similarity index 61%
rename from src/components/data-table/columns-configurator/columns-configurator.test.tsx
rename to src/components/data-table/column-selector/column-selector.test.tsx
index 56b195f7e81e428178989867cbd7126821e100bf..26c16a1b93c70bbf0854b15aaed8d041edac52f5 100644 (file)
@@ -5,74 +5,74 @@
 import * as React from "react";
 import { mount, configure } from "enzyme";
 import * as Adapter from "enzyme-adapter-react-16";
-import ColumnsConfigurator, { ColumnsConfiguratorTrigger } from "./columns-configurator";
-import { Column } from "../column";
+import ColumnSelector, { ColumnSelectorProps, ColumnSelectorTrigger } from "./column-selector";
+import { DataColumn } from "../data-column";
 import { ListItem, Checkbox } from "@material-ui/core";
 
 configure({ adapter: new Adapter() });
 
-describe("<ColumnsConfigurator />", () => {
+describe("<ColumnSelector />", () => {
     it("shows only configurable columns", () => {
-        const columns: Array<Column<void>> = [
+        const columns: Array<DataColumn<void>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: () => <span />,
                 selected: true
             },
             {
-                header: "Column 2",
+                name: "Column 2",
                 render: () => <span />,
                 selected: true,
                 configurable: true,
             },
             {
-                header: "Column 3",
+                name: "Column 3",
                 render: () => <span />,
                 selected: true,
                 configurable: false
             }
         ];
-        const columnsConfigurator = mount(<ColumnsConfigurator columns={columns} onColumnToggle={jest.fn()} />);
-        columnsConfigurator.find(ColumnsConfiguratorTrigger).simulate("click");
+        const columnsConfigurator = mount(<ColumnSelector columns={columns} onColumnToggle={jest.fn()} />);
+        columnsConfigurator.find(ColumnSelectorTrigger).simulate("click");
         expect(columnsConfigurator.find(ListItem)).toHaveLength(2);
     });
 
     it("renders checked checkboxes next to selected columns", () => {
-        const columns: Array<Column<void>> = [
+        const columns: Array<DataColumn<void>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: () => <span />,
                 selected: true
             },
             {
-                header: "Column 2",
+                name: "Column 2",
                 render: () => <span />,
                 selected: false
             },
             {
-                header: "Column 3",
+                name: "Column 3",
                 render: () => <span />,
                 selected: true
             }
         ];
-        const columnsConfigurator = mount(<ColumnsConfigurator columns={columns} onColumnToggle={jest.fn()} />);
-        columnsConfigurator.find(ColumnsConfiguratorTrigger).simulate("click");
+        const columnsConfigurator = mount(<ColumnSelector columns={columns} onColumnToggle={jest.fn()} />);
+        columnsConfigurator.find(ColumnSelectorTrigger).simulate("click");
         expect(columnsConfigurator.find(Checkbox).at(0).prop("checked")).toBe(true);
         expect(columnsConfigurator.find(Checkbox).at(1).prop("checked")).toBe(false);
         expect(columnsConfigurator.find(Checkbox).at(2).prop("checked")).toBe(true);
     });
 
     it("calls onColumnToggle with clicked column", () => {
-        const columns: Array<Column<void>> = [
+        const columns: Array<DataColumn<void>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: () => <span />,
                 selected: true
             }
         ];
         const onColumnToggle = jest.fn();
-        const columnsConfigurator = mount(<ColumnsConfigurator columns={columns} onColumnToggle={onColumnToggle} />);
-        columnsConfigurator.find(ColumnsConfiguratorTrigger).simulate("click");
+        const columnsConfigurator = mount(<ColumnSelector columns={columns} onColumnToggle={onColumnToggle} />);
+        columnsConfigurator.find(ColumnSelectorTrigger).simulate("click");
         columnsConfigurator.find(ListItem).simulate("click");
         expect(onColumnToggle).toHaveBeenCalledWith(columns[0]);
     });
diff --git a/src/components/data-table/column-selector/column-selector.tsx b/src/components/data-table/column-selector/column-selector.tsx
new file mode 100644 (file)
index 0000000..87d3e8d
--- /dev/null
@@ -0,0 +1,56 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import * as React from 'react';
+import { WithStyles, StyleRulesCallback, Theme, withStyles, IconButton, Paper, List, Checkbox, ListItemText, ListItem } from '@material-ui/core';
+import MenuIcon from "@material-ui/icons/Menu";
+import { DataColumn, isColumnConfigurable } from '../data-column';
+import Popover from "../../popover/popover";
+import { IconButtonProps } from '@material-ui/core/IconButton';
+
+export interface ColumnSelectorProps {
+    columns: Array<DataColumn<any>>;
+    onColumnToggle: (column: DataColumn<any>) => void;
+}
+
+const ColumnSelector: React.SFC<ColumnSelectorProps & WithStyles<CssRules>> = ({ columns, onColumnToggle, classes }) =>
+    <Popover triggerComponent={ColumnSelectorTrigger}>
+        <Paper>
+            <List dense>
+                {columns
+                    .filter(isColumnConfigurable)
+                    .map((column, index) => (
+                        <ListItem
+                            button
+                            key={index}
+                            onClick={() => onColumnToggle(column)}>
+                            <Checkbox
+                                disableRipple
+                                color="primary"
+                                checked={column.selected}
+                                className={classes.checkbox} />
+                            <ListItemText>
+                                {column.name}
+                            </ListItemText>
+                        </ListItem>
+                    ))}
+            </List>
+        </Paper>
+    </Popover>;
+
+export const ColumnSelectorTrigger: React.SFC<IconButtonProps> = (props) =>
+    <IconButton {...props}>
+        <MenuIcon />
+    </IconButton>;
+
+type CssRules = "checkbox";
+
+const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
+    checkbox: {
+        width: 24,
+        height: 24
+    }
+});
+
+export default withStyles(styles)(ColumnSelector);
diff --git a/src/components/data-table/columns-configurator/columns-configurator.tsx b/src/components/data-table/columns-configurator/columns-configurator.tsx
deleted file mode 100644 (file)
index cf5841e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (C) The Arvados Authors. All rights reserved.
-//
-// SPDX-License-Identifier: AGPL-3.0
-
-import * as React from 'react';
-import { WithStyles, StyleRulesCallback, Theme, withStyles, IconButton, Paper, List, Checkbox, ListItemText, ListItem } from '@material-ui/core';
-import MenuIcon from "@material-ui/icons/Menu";
-import { Column, isColumnConfigurable } from '../column';
-import Popover from "../../popover/popover";
-import { IconButtonProps } from '@material-ui/core/IconButton';
-
-export interface ColumnsConfiguratorProps {
-    columns: Array<Column<any>>;
-    onColumnToggle: (column: Column<any>) => void;
-}
-
-const ColumnsConfigurator: React.SFC<ColumnsConfiguratorProps & WithStyles<CssRules>> = ({ columns, onColumnToggle, classes }) => {
-    return (
-        <Popover triggerComponent={ColumnsConfiguratorTrigger}>
-            <Paper>
-                <List dense>
-                    {
-                        columns
-                            .filter(isColumnConfigurable)
-                            .map((column, index) => (
-                                <ListItem
-                                    button
-                                    key={index}
-                                    onClick={() => onColumnToggle(column)}
-                                >
-                                    <Checkbox
-                                        disableRipple
-                                        color="primary"
-                                        checked={column.selected}
-                                        className={classes.checkbox}
-                                    />
-                                    <ListItemText>
-                                        {column.header}
-                                    </ListItemText>
-                                </ListItem>
-                            ))
-                    }
-                </List>
-            </Paper>
-        </Popover>
-    );
-};
-
-export const ColumnsConfiguratorTrigger: React.SFC<IconButtonProps> = (props) => (
-    <IconButton {...props}>
-        <MenuIcon />
-    </IconButton>
-);
-
-type CssRules = "checkbox";
-
-const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
-    checkbox: {
-        width: 24,
-        height: 24
-    }
-});
-
-export default withStyles(styles)(ColumnsConfigurator);
similarity index 72%
rename from src/components/data-table/column.ts
rename to src/components/data-table/data-column.ts
index 53ac7b001f412fa4288c7114f38d1c7459007158..f991f62730d14d16b42c8bf81ffaac5c055c21dd 100644 (file)
@@ -2,8 +2,8 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-export interface Column<T> {
-    header: string;
+export interface DataColumn<T> {
+    name: string;
     selected: boolean;
     configurable?: boolean;
     key?: React.Key;
@@ -11,6 +11,6 @@ export interface Column<T> {
     renderHeader?: () => React.ReactElement<void>;
 }
 
-export const isColumnConfigurable = <T>(column: Column<T>) => {
-    return column.configurable === undefined || column.configurable === true;
+export const isColumnConfigurable = <T>(column: DataColumn<T>) => {
+    return column.configurable === undefined || column.configurable;
 };
\ No newline at end of file
index 853aaa97f430fdd0abd24922e0e4310366acc215..4a34a6b729e31eac6740fb0fef8f89c5b593529f 100644 (file)
@@ -6,26 +6,26 @@ import * as React from "react";
 import { mount, configure } from "enzyme";
 import * as Adapter from "enzyme-adapter-react-16";
 import DataTable from "./data-table";
-import { Column } from "./column";
+import { DataColumn } from "./data-column";
 import { TableHead, TableCell, Typography, TableBody, Button } from "@material-ui/core";
 
 configure({ adapter: new Adapter() });
 
 describe("<DataTable />", () => {
     it("shows only selected columns", () => {
-        const columns: Array<Column<string>> = [
+        const columns: Array<DataColumn<string>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: () => <span />,
                 selected: true
             },
             {
-                header: "Column 2",
+                name: "Column 2",
                 render: () => <span />,
                 selected: true
             },
             {
-                header: "Column 3",
+                name: "Column 3",
                 render: () => <span />,
                 selected: false
             }
@@ -34,10 +34,10 @@ describe("<DataTable />", () => {
         expect(dataTable.find(TableHead).find(TableCell)).toHaveLength(2);
     });
     
-    it("renders header label", () => {
-        const columns: Array<Column<string>> = [
+    it("renders column name", () => {
+        const columns: Array<DataColumn<string>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: () => <span />,
                 selected: true
             }
@@ -46,10 +46,10 @@ describe("<DataTable />", () => {
         expect(dataTable.find(TableHead).find(TableCell).text()).toBe("Column 1");
     });
     
-    it("uses renderHeader instead of header prop", () => {
-        const columns: Array<Column<string>> = [
+    it("uses renderHeader instead of name prop", () => {
+        const columns: Array<DataColumn<string>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 renderHeader: () => <span>Column Header</span>,
                 render: () => <span />,
                 selected: true
@@ -60,9 +60,9 @@ describe("<DataTable />", () => {
     });
     
     it("passes column key prop to corresponding cells", () => {
-        const columns: Array<Column<string>> = [
+        const columns: Array<DataColumn<string>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 key: "column-1-key",
                 render: () => <span />,
                 selected: true
@@ -74,9 +74,9 @@ describe("<DataTable />", () => {
     });
     
     it("shows information that items array is empty", () => {
-        const columns: Array<Column<string>> = [
+        const columns: Array<DataColumn<string>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: () => <span />,
                 selected: true
             }
@@ -86,14 +86,14 @@ describe("<DataTable />", () => {
     });
 
     it("renders items", () => {
-        const columns: Array<Column<string>> = [
+        const columns: Array<DataColumn<string>> = [
             {
-                header: "Column 1",
+                name: "Column 1",
                 render: (item) => <Typography>{item}</Typography>,
                 selected: true
             },
             {
-                header: "Column 2",
+                name: "Column 2",
                 render: (item) => <Button>{item}</Button>,
                 selected: true
             }
index 5a372c41d89c8d1d70091ca9b0da9bcb71f1a668..0367dfa9c7f65609cfb26180d6d31de8534a8c37 100644 (file)
@@ -4,61 +4,50 @@
 
 import * as React from 'react';
 import { Table, TableBody, TableRow, TableCell, TableHead, StyleRulesCallback, Theme, WithStyles, withStyles, Typography } from '@material-ui/core';
-import { Column } from './column';
+import { DataColumn } from './data-column';
 
 export interface DataTableProps<T> {
     items: T[];
-    columns: Array<Column<T>>;
+    columns: Array<DataColumn<T>>;
     onItemClick?: (item: T) => void;
 }
 
 class DataTable<T> extends React.Component<DataTableProps<T> & WithStyles<CssRules>> {
     render() {
         const { items, columns, classes, onItemClick } = this.props;
-        return (
-            <div className={classes.tableContainer}>
-                {
-                    items.length > 0 ? (
-                        <Table>
-                            <TableHead>
-                                <TableRow>
-                                    {
-                                        columns
-                                            .filter(column => column.selected)
-                                            .map(({ header, renderHeader, key }, index) => (
-                                                <TableCell key={key || index}>
-                                                    {renderHeader ? renderHeader() : header}
-                                                </TableCell>
-                                            ))
-                                    }
+        return <div className={classes.tableContainer}>
+            {items.length > 0 ?
+                <Table>
+                    <TableHead>
+                        <TableRow>
+                            {columns
+                                .filter(column => column.selected)
+                                .map(({ name, renderHeader, key }, index) =>
+                                    <TableCell key={key || index}>
+                                        {renderHeader ? renderHeader() : name}
+                                    </TableCell>
+                                )}
+                        </TableRow>
+                    </TableHead>
+                    <TableBody className={classes.tableBody}>
+                        {items
+                            .map((item, index) =>
+                                <TableRow
+                                    hover
+                                    key={index}
+                                    onClick={() => onItemClick && onItemClick(item)}>
+                                    {columns
+                                        .filter(column => column.selected)
+                                        .map((column, index) => (
+                                            <TableCell key={column.key || index}>
+                                                {column.render(item)}
+                                            </TableCell>
+                                        ))}
                                 </TableRow>
-                            </TableHead>
-                            <TableBody className={classes.tableBody}>
-                                {
-                                    items
-                                        .map((item, index) => (
-                                            <TableRow key={index} hover onClick={() => onItemClick && onItemClick(item)}>
-                                                {
-                                                    columns
-                                                        .filter(column => column.selected)
-                                                        .map((column, index) => (
-                                                            <TableCell key={column.key || index}>
-                                                                {column.render(item)}
-                                                            </TableCell>
-                                                        ))
-                                                }
-                                            </TableRow>
-                                        ))
-                                }
-                            </TableBody>
-                        </Table>
-                    ) : (
-                            <Typography>No items</Typography>
-                        )
-                }
-
-            </div>
-        );
+                            )}
+                    </TableBody>
+                </Table> : <Typography>No items</Typography>}
+        </div>;
     }
 }
 
index be88e5e2d97a31be133941213408f17b1e6afbf0..f35754b1bcdb09b0616c411d3cbbd3d99d20d8af 100644 (file)
@@ -2,8 +2,8 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-export * from "./column";
-export * from "./columns-configurator/columns-configurator";
-export { default as ColumnsConfigurator } from "./columns-configurator/columns-configurator";
+export * from "./data-column";
+export * from "./column-selector/column-selector";
+export { default as ColumnSelector } from "./column-selector/column-selector";
 export * from "./data-table";
 export { default as DataTable } from "./data-table";
\ No newline at end of file