Add basic application skeleton
[arvados.git] / src / components / tree / tree.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 List from "@material-ui/core/List/List";
7 import ListItem from "@material-ui/core/ListItem/ListItem";
8 import { ReactElement } from "react";
9
10 interface TreeProps<T> {
11     items: T[],
12     render: (item: T) => ReactElement<{}>
13 }
14
15 class Tree<T> extends React.Component<TreeProps<T>, {}> {
16     render() {
17         return <List>
18             {this.props.items.map((it: T, idx: number) =>
19                 <ListItem key={`item/${idx}`} button>
20                     {this.props.render(it)}
21                 </ListItem>
22             )}
23         </List>
24     }
25 }
26
27 export default Tree;