Post merge fixes
[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';
7 import { ProjectState } from '../../store/project/project-reducer';
8 import { RootState } from '../../store/store';
9 import { connect, DispatchProp } from 'react-redux';
10 import { CollectionState } from "../../store/collection/collection-reducer";
11 import { ItemMode, setProjectItem } from "../../store/navigation/navigation-action";
12 import ProjectExplorer, { ProjectExplorerContextActions } from "../../views-components/project-explorer/project-explorer";
13 import { projectExplorerItems } from "./project-panel-selectors";
14 import { ProjectExplorerItem } from "../../views-components/project-explorer/project-explorer-item";
15
16 interface ProjectPanelDataProps {
17     projects: ProjectState;
18     collections: CollectionState;
19 }
20
21 type ProjectPanelProps = ProjectPanelDataProps & RouteComponentProps<{ name: string }> & DispatchProp;
22
23 class ProjectPanel extends React.Component<ProjectPanelProps> {
24     render() {
25         const items = projectExplorerItems(
26             this.props.projects.items,
27             this.props.projects.currentItemId,
28             this.props.collections
29         );
30         return (
31             <ProjectExplorer
32                 items={items}
33                 onRowClick={this.goToItem}
34             />
35         );
36     }
37
38     goToItem = (item: ProjectExplorerItem) => {
39         this.props.dispatch<any>(setProjectItem(this.props.projects.items, item.uuid, item.kind, ItemMode.BOTH));
40     }
41 }
42
43 export default connect(
44     (state: RootState) => ({
45         projects: state.projects,
46         collections: state.collections
47     })
48 )(ProjectPanel);