From 3eaf143e04107bf25e15aaef4d1b4d5d7ef68f86 Mon Sep 17 00:00:00 2001 From: Pawel Kowalczyk Date: Tue, 26 Jun 2018 12:56:00 +0200 Subject: [PATCH] table-layout-fix Feature #13679 Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk --- .../data-explorer/data-explorer.test.tsx | 1 - .../data-explorer/data-explorer.tsx | 29 +++++++++-------- src/components/data-table/data-column.ts | 1 + src/components/data-table/data-table.test.tsx | 18 ----------- src/components/data-table/data-table.tsx | 31 ++++++++----------- .../project-explorer/project-explorer.tsx | 18 +++++++---- 6 files changed, 40 insertions(+), 58 deletions(-) diff --git a/src/components/data-explorer/data-explorer.test.tsx b/src/components/data-explorer/data-explorer.test.tsx index 1ce56414..d2ca7f7b 100644 --- a/src/components/data-explorer/data-explorer.test.tsx +++ b/src/components/data-explorer/data-explorer.test.tsx @@ -88,7 +88,6 @@ describe("", () => { items={[]} />); expect(dataExplorer.find(SearchInput)).toHaveLength(0); - expect(dataExplorer.find(ColumnSelector)).toHaveLength(0); expect(dataExplorer.find(TablePagination)).toHaveLength(0); }); diff --git a/src/components/data-explorer/data-explorer.tsx b/src/components/data-explorer/data-explorer.tsx index 6a3103b1..9aacadf3 100644 --- a/src/components/data-explorer/data-explorer.tsx +++ b/src/components/data-explorer/data-explorer.tsx @@ -3,13 +3,13 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, Theme, WithStyles, TablePagination, Table, IconButton } from '@material-ui/core'; +import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, Theme, WithStyles, TablePagination, IconButton } from '@material-ui/core'; import MoreVertIcon from "@material-ui/icons/MoreVert"; import ContextMenu, { ContextMenuActionGroup, ContextMenuAction } from "../../components/context-menu/context-menu"; import ColumnSelector from "../../components/column-selector/column-selector"; import DataTable from "../../components/data-table/data-table"; import { mockAnchorFromMouseEvent } from "../../components/popover/helpers"; -import { DataColumn, toggleSortDirection } from "../../components/data-table/data-column"; +import { DataColumn } from "../../components/data-table/data-column"; import { DataTableFilterItem } from '../../components/data-table-filters/data-table-filters'; import SearchInput from '../search-input/search-input'; @@ -50,18 +50,16 @@ class DataExplorer extends React.Component & WithStyles< onActionClick={this.callAction} onClose={this.closeContextMenu} /> - {this.props.items.length > 0 && - -
- -
- -
} - + +
+ {this.props.items.length > 0 && } +
+ +
extends React.Component & WithStyles< selected: true, key: "context-actions", renderHeader: () => null, - render: this.renderContextMenuTrigger + render: this.renderContextMenuTrigger, + width: "auto" }; } diff --git a/src/components/data-table/data-column.ts b/src/components/data-table/data-column.ts index 1ef7d98f..bbfea7ac 100644 --- a/src/components/data-table/data-column.ts +++ b/src/components/data-table/data-column.ts @@ -13,6 +13,7 @@ export interface DataColumn { filters?: DataTableFilterItem[]; render: (item: T) => React.ReactElement; renderHeader?: () => React.ReactElement | null; + width?: string; } export type SortDirection = "asc" | "desc" | "none"; diff --git a/src/components/data-table/data-table.test.tsx b/src/components/data-table/data-table.test.tsx index 439e6c27..726972e0 100644 --- a/src/components/data-table/data-table.test.tsx +++ b/src/components/data-table/data-table.test.tsx @@ -98,24 +98,6 @@ describe("", () => { expect(dataTable.find(TableBody).find(TableCell).key()).toBe("column-1-key"); }); - it("shows information that items array is empty", () => { - const columns: Array> = [ - { - name: "Column 1", - render: () => , - selected: true - } - ]; - const dataTable = mount(); - expect(dataTable.find(Typography).text()).toBe("No items"); - }); - it("renders items", () => { const columns: Array> = [ { diff --git a/src/components/data-table/data-table.tsx b/src/components/data-table/data-table.tsx index e86113ef..bf0854b9 100644 --- a/src/components/data-table/data-table.tsx +++ b/src/components/data-table/data-table.tsx @@ -22,29 +22,23 @@ class DataTable extends React.Component & WithStyles - {items.length > 0 ? - - - - {this.mapVisibleColumns(this.renderHeadCell)} - - - - {items.map(this.renderBodyRow)} - -
: - No items - } + + + + {this.mapVisibleColumns(this.renderHeadCell)} + + + + {items.map(this.renderBodyRow)} + +
; } renderHeadCell = (column: DataColumn, index: number) => { const { name, key, renderHeader, filters, sortDirection } = column; const { onSortToggle, onFiltersChange } = this.props; - return + return {renderHeader ? renderHeader() : filters @@ -96,7 +90,8 @@ type CssRules = "tableBody" | "tableContainer" | "noItemsInfo"; const styles: StyleRulesCallback = (theme: Theme) => ({ tableContainer: { - overflowX: 'auto' + overflowX: 'auto', + overflowY: 'hidden' }, tableBody: { background: theme.palette.background.paper diff --git a/src/views-components/project-explorer/project-explorer.tsx b/src/views-components/project-explorer/project-explorer.tsx index 4931c09a..b54fd72b 100644 --- a/src/views-components/project-explorer/project-explorer.tsx +++ b/src/views-components/project-explorer/project-explorer.tsx @@ -41,7 +41,8 @@ class ProjectExplorer extends React.Component renderType(item.type) + render: item => renderType(item.type), + width: "125px" }, { name: "Owner", selected: true, - render: item => renderOwner(item.owner) + render: item => renderOwner(item.owner), + width: "200px" }, { name: "File size", selected: true, sortDirection: "none", - render: item => renderFileSize(item.fileSize) + render: item => renderFileSize(item.fileSize), + width: "50px" }, { name: "Last modified", selected: true, - render: item => renderDate(item.lastModified) + render: item => renderDate(item.lastModified), + width: "150px" }] }; -- 2.30.2