From 97599484adf25a991f6733854334676dd55f7260 Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Mon, 10 Sep 2018 11:17:30 +0200 Subject: [PATCH] Update details panel layout Feature #14135 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- package.json | 1 + .../details-panel/details-panel.tsx | 112 ++++++++++-------- yarn.lock | 2 +- 3 files changed, 65 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index 0e6435ebf5..84d1510f56 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "react-router-dom": "4.3.1", "react-router-redux": "5.0.0-alpha.9", "react-scripts-ts": "2.17.0", + "react-transition-group": "2.4.0", "redux": "4.0.0", "redux-thunk": "2.3.0", "unionize": "2.1.2" diff --git a/src/views-components/details-panel/details-panel.tsx b/src/views-components/details-panel/details-panel.tsx index c0d4797fa5..65c2761b7c 100644 --- a/src/views-components/details-panel/details-panel.tsx +++ b/src/views-components/details-panel/details-panel.tsx @@ -3,8 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { Drawer, IconButton, Tabs, Tab, Typography, Grid } from '@material-ui/core'; +import { IconButton, Tabs, Tab, Typography, Grid, Tooltip } from '@material-ui/core'; import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; +import { Transition } from 'react-transition-group'; import { ArvadosTheme } from '~/common/custom-theme'; import * as classnames from "classnames"; import { connect } from 'react-redux'; @@ -20,29 +21,30 @@ import { ProcessDetails } from "./process-details"; import { EmptyDetails } from "./empty-details"; import { DetailsData } from "./details-data"; import { DetailsResource } from "~/models/details"; -import { getResource } from '../../store/resources/resources'; +import { getResource } from '~/store/resources/resources'; type CssRules = 'root' | 'container' | 'opened' | 'headerContainer' | 'headerIcon' | 'headerTitle' | 'tabContainer'; -const drawerWidth = 320; +const DRAWER_WIDTH = 320; +const SLIDE_TIMEOUT = 500; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ root: { width: 0, - overflowX: 'hidden', - transition: 'width 0.5s ease', + overflow: 'hidden', + transition: `width ${SLIDE_TIMEOUT}ms ease`, background: theme.palette.background.paper, borderLeft: `1px solid ${theme.palette.divider}`, height: '100%', }, opened: { - width: drawerWidth, + width: DRAWER_WIDTH, }, container: { - width: drawerWidth, + width: DRAWER_WIDTH, }, drawerPaper: { position: 'relative', - width: drawerWidth + width: DRAWER_WIDTH }, headerContainer: { color: theme.palette.grey["600"], @@ -57,7 +59,8 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ wordWrap: 'break-word' }, tabContainer: { - padding: theme.spacing.unit * 3 + padding: theme.spacing.unit * 3, + overflow: 'auto', } }); @@ -108,50 +111,61 @@ export const DetailsPanel = withStyles(styles)( this.setState({ tabsValue: value }); } - renderTabContainer = (children: React.ReactElement) => - - {children} - - render() { - const { classes, onCloseDrawer, isOpened, item } = this.props; - const { tabsValue } = this.state; + const { classes, isOpened } = this.props; return ( -
-
-
- - - {item.getIcon(classes.headerIcon)} - - - - {item.getTitle()} - - - - - {} - - - -
- - - - - {tabsValue === 0 && this.renderTabContainer( - - {item.getDetails()} - - )} - {tabsValue === 1 && this.renderTabContainer( - - )} -
-
+ + + {this.renderContent()} + + ); } + + renderContent() { + const { classes, onCloseDrawer, item } = this.props; + const { tabsValue } = this.state; + return + + + + {item.getIcon(classes.headerIcon)} + + + + + {item.getTitle()} + + + + + + {} + + + + + + + + + + + + + {tabsValue === 0 + ? item.getDetails() + : null} + + + ; + } } ) ); diff --git a/yarn.lock b/yarn.lock index 67c12647b4..359927100d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6307,7 +6307,7 @@ react-test-renderer@^16.0.0-0: prop-types "^15.6.0" react-is "^16.4.1" -react-transition-group@^2.2.1: +react-transition-group@2.4.0, react-transition-group@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a" dependencies: -- 2.30.2