Set tslint semicolon rule and aply it to the project
[arvados-workbench2.git] / src / components / project-tree / project-tree.tsx
index 39c4711b7f15b31574812307e38b83b0fc2072f4..43ad312a940edb632ebcfa4e8eeacc28ac28a242 100644 (file)
@@ -12,12 +12,15 @@ import Typography from '@material-ui/core/Typography';
 import Tree, { TreeItem } from '../tree/tree';
 import { Project } from '../../models/project';
 
-type CssRules = 'active' | 'row' | 'treeContainer';
+type CssRules = 'active' | 'listItemText' | 'row' | 'treeContainer';
 
 const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
     active: {
         color: '#4285F6',
     },
+    listItemText: {
+        padding: '0px',
+    },
     row: {
         display: 'flex',
         alignItems: 'center',
@@ -32,25 +35,34 @@ const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
     }
 });
 
-export interface WorkbenchProps {
+export interface ProjectTreeProps {
     projects: Array<TreeItem<Project>>;
-    toggleProjectTreeItem: (id: string) => any;
+    toggleProjectTreeItem: (id: string) => void;
 }
 
-class ProjectTree<T> extends React.Component<WorkbenchProps & WithStyles<CssRules>> {
+class ProjectTree<T> extends React.Component<ProjectTreeProps & WithStyles<CssRules>> {
     render(): ReactElement<any> {
         const {classes, projects} = this.props;
+        const {active, listItemText, row, treeContainer} = classes;
         return (
-            <div className={classes.treeContainer}>
+            <div className={treeContainer}>
                 <Tree items={projects}
                     toggleItem={this.props.toggleProjectTreeItem}
-                    render={(project: TreeItem<Project>) => <span className={classes.row}>
-                        <div><ListItemIcon className={project.active ? classes.active : ''}>{project.data.icon}</ListItemIcon></div>
-                        <div><ListItemText primary={<Typography className={project.active ? classes.active : ''}>{project.data.name}</Typography>} /></div>
-                    </span>} />
+                    render={(project: TreeItem<Project>, level: number) =>
+                        <span className={row}>
+                            <ListItemIcon className={project.active ? active : ''}>
+                                {level === 0 ? <i className="fas fa-th"/> : <i className="fas fa-folder"/>}
+                            </ListItemIcon>
+                            <ListItemText className={listItemText} primary={
+                                <Typography className={project.active ? active : ''}>
+                                    {project.data.name}
+                                </Typography>
+                            }/>
+                        </span>
+                    }/>
             </div>
         );
     }
 }
 
-export default withStyles(styles)(ProjectTree)
\ No newline at end of file
+export default withStyles(styles)(ProjectTree);