X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ce55180216574bddb30dd052215a7320632a9fb1..22cfdad7a451f67b0b4c195b58815cdf2abcfda9:/src/components/tree/tree.tsx diff --git a/src/components/tree/tree.tsx b/src/components/tree/tree.tsx index a8cfabd0bf..fdde3c16a6 100644 --- a/src/components/tree/tree.tsx +++ b/src/components/tree/tree.tsx @@ -9,12 +9,22 @@ import { StyleRulesCallback, Theme, withStyles, WithStyles } from '@material-ui/ import { ReactElement } from "react"; import Collapse from "@material-ui/core/Collapse/Collapse"; -type CssRules = 'list'; +type CssRules = 'list' | 'activeArrow' | 'arrow' | 'arrowRotate'; const styles: StyleRulesCallback = (theme: Theme) => ({ list: { paddingBottom: '3px', paddingTop: '3px', + }, + activeArrow: { + color: '#4285F6', + position: 'absolute', + }, + arrow: { + position: 'absolute', + }, + arrowRotate: { + transform: 'rotate(-90deg)', } }); @@ -34,23 +44,24 @@ interface TreeProps { } class Tree extends React.Component & WithStyles, {}> { + renderArrow (items: Array> | undefined, arrowClass: string, isOpen: boolean){ + return items && items.length > 0 ? : '' + } render(): ReactElement { const level = this.props.level ? this.props.level : 0; const {classes, render, toggleItem, items} = this.props; - return + const {list, arrow, activeArrow, arrowRotate} = classes; + return {items && items.map((it: TreeItem, idx: number) =>
- toggleItem(it.id)} className={classes.list} style={{paddingLeft: (level + 1) * 15}}> - { - it.active ? - (it.items && it.items.length > 0 ? : null) : - (it.items && it.items.length > 0 ? : null) - } + toggleItem(it.id)} className={list} style={{paddingLeft: (level + 1) * 20}}> + {it.active ? this.renderArrow(it.items, activeArrow, it.open) : this.renderArrow(it.items, arrow, it.open)} {render(it)} {it.items && it.items.length > 0 && - @@ -60,5 +71,5 @@ class Tree extends React.Component & WithStyles, {}> { } } - -export default withStyles(styles)(Tree); +const StyledTree = withStyles(styles)(Tree); +export default StyledTree