refs #13598 Merge branch 'origin/#13598-Left-side-panel'
[arvados-workbench2.git] / src / views / project-panel / project-panel.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import * as React from 'react';
6 import { RouteComponentProps } from 'react-router-dom';
7 import { DispatchProp, connect } from 'react-redux';
8 import { ProjectState, findTreeItem } from '../../store/project/project-reducer';
9 import ProjectExplorer from '../../views-components/project-explorer/project-explorer';
10 import { RootState } from '../../store/store';
11 import { mapProjectTreeItem } from './project-panel-selectors';
12
13 interface ProjectPanelDataProps {
14     projects: ProjectState;
15 }
16
17 type ProjectPanelProps = ProjectPanelDataProps & RouteComponentProps<{ name: string }> & DispatchProp;
18
19 class ProjectPanel extends React.Component<ProjectPanelProps> {
20
21     render() {
22         const project = findTreeItem(this.props.projects, this.props.match.params.name);
23         const projectItems = project && project.items || [];
24         return (
25             <ProjectExplorer items={projectItems.map(mapProjectTreeItem)} />
26         );
27     }
28 }
29
30 export default connect(
31     (state: RootState) => ({
32         projects: state.projects
33     })
34 )(ProjectPanel);