Merge branch 'master' into 14603-add-controlled-vocabulary-to-advanced-search
[arvados-workbench2.git] / src / views-components / side-panel / side-panel.tsx
index b81f39ef338a850ce22a158cb4dd57cd5ca51de2..62d9dc3532e2efc48605b261e99ddffaa20d7133 100644 (file)
@@ -4,27 +4,27 @@
 
 import * as React from 'react';
 import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
-import Drawer from '@material-ui/core/Drawer';
 import { ArvadosTheme } from '~/common/custom-theme';
 import { SidePanelTree, SidePanelTreeProps } from '~/views-components/side-panel-tree/side-panel-tree';
 import { compose, Dispatch } from 'redux';
 import { connect } from 'react-redux';
-import { navigateFromSidePanel } from '../../store/side-panel/side-panel-action';
+import { navigateFromSidePanel } from '~/store/side-panel/side-panel-action';
+import { Grid } from '@material-ui/core';
+import { SidePanelButton } from '~/views-components/side-panel-button/side-panel-button';
+import { RootState } from '~/store/store';
 
 const DRAWER_WITDH = 240;
 
-type CssRules = 'drawerPaper' | 'toolbar';
+type CssRules = 'root';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
-    drawerPaper: {
-        position: 'relative',
+    root: {
+        background: theme.palette.background.paper,
+        borderRight: `1px solid ${theme.palette.divider}`,
+        height: '100%',
+        overflowX: 'auto',
         width: DRAWER_WITDH,
-        display: 'flex',
-        flexDirection: 'column',
-        paddingTop: 58,
-        overflow: 'auto',
-    },
-    toolbar: theme.mixins.toolbar
+    }
 });
 
 const mapDispatchToProps = (dispatch: Dispatch): SidePanelTreeProps => ({
@@ -33,13 +33,15 @@ const mapDispatchToProps = (dispatch: Dispatch): SidePanelTreeProps => ({
     }
 });
 
-export const SidePanel = compose(
-    withStyles(styles),
-    connect(undefined, mapDispatchToProps)
-)(({ classes, ...props }: WithStyles<CssRules> & SidePanelTreeProps) =>
-    <Drawer
-        variant="permanent"
-        classes={{ paper: classes.drawerPaper }}>
-        <div className={classes.toolbar} />
-        <SidePanelTree {...props} />
-    </Drawer>);
+const mapStateToProps = ({ router }: RootState) => ({
+    currentRoute: router.location ? router.location.pathname : '',
+});
+
+export const SidePanel = withStyles(styles)(
+    connect(mapStateToProps, mapDispatchToProps)(
+        ({ classes, ...props }: WithStyles<CssRules> & SidePanelTreeProps & { currentRoute: string }) =>
+            <Grid item xs>
+                <SidePanelButton key={props.currentRoute} />
+                <SidePanelTree {...props} />
+            </Grid>
+    ));