// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; import List from "@material-ui/core/List/List"; import ListItem from "@material-ui/core/ListItem/ListItem"; import { ReactElement } from "react"; import Collapse from "@material-ui/core/Collapse/Collapse"; export interface TreeItem { data: T; id: string; open: boolean; items?: Array>; } interface TreeProps { items?: Array>; render: (item: T) => ReactElement<{}>; toggleItem: (id: string) => any; level?: number; } class Tree extends React.Component, {}> { render(): ReactElement { const level = this.props.level ? this.props.level : 0; return {this.props.items && this.props.items.map((it: TreeItem, idx: number) =>
this.props.toggleItem(it.id)} style={{paddingLeft: (level + 1) * 30}}> {this.props.render(it.data)} {it.items && it.items.length > 0 && }
)}
} } export default Tree;