Remove mouse-over to select topics
This commit is contained in:
@@ -29,6 +29,9 @@ const styles = (theme: Theme) => {
|
|||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
marginTop: '-1px',
|
marginTop: '-1px',
|
||||||
},
|
},
|
||||||
|
subnodes: {
|
||||||
|
marginLeft: theme.spacing(1.5),
|
||||||
|
},
|
||||||
selected: {
|
selected: {
|
||||||
backgroundColor: 'rgba(170, 170, 170, 0.55)',
|
backgroundColor: 'rgba(170, 170, 170, 0.55)',
|
||||||
},
|
},
|
||||||
@@ -187,24 +190,29 @@ class TreeNode extends React.Component<Props, State> {
|
|||||||
const highlightClass = this.state.selected ? this.props.classes.selected : (this.state.mouseOver ? this.props.classes.hover : '')
|
const highlightClass = this.state.selected ? this.props.classes.selected : (this.state.mouseOver ? this.props.classes.hover : '')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<div>
|
||||||
<div
|
<div
|
||||||
key={this.props.treeNode.hash()}
|
key={this.props.treeNode.hash()}
|
||||||
className={`${classes.node} ${this.props.className}`}
|
className={`${classes.node} ${this.props.className}`}
|
||||||
onClick={this.didClickNode}
|
|
||||||
onMouseOver={this.mouseOver}
|
onMouseOver={this.mouseOver}
|
||||||
onMouseOut={this.mouseOut}
|
onMouseOut={this.mouseOut}
|
||||||
|
onClick={this.didClickTitle}
|
||||||
ref={this.nodeRef}
|
ref={this.nodeRef}
|
||||||
>
|
>
|
||||||
<TreeNodeTitle
|
<TreeNodeTitle
|
||||||
style={animation}
|
style={animation}
|
||||||
|
toggleCollapsed={this.toggleCollapsed}
|
||||||
|
didSelectNode={this.didSelectTopic}
|
||||||
collapsed={this.collapsed()}
|
collapsed={this.collapsed()}
|
||||||
treeNode={this.props.treeNode}
|
treeNode={this.props.treeNode}
|
||||||
name={this.props.name}
|
name={this.props.name}
|
||||||
didSelectNode={this.didSelectTopic}
|
|
||||||
className={highlightClass}
|
className={highlightClass}
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
|
<div className={classes.subnodes}>
|
||||||
{this.renderNodes()}
|
{this.renderNodes()}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,6 +220,12 @@ class TreeNode extends React.Component<Props, State> {
|
|||||||
this.props.didSelectTopic(this.props.treeNode)
|
this.props.didSelectTopic(this.props.treeNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private didClickTitle = (event: React.MouseEvent) => {
|
||||||
|
event.preventDefault()
|
||||||
|
this.props.didSelectTopic(this.props.treeNode)
|
||||||
|
this.toggle()
|
||||||
|
}
|
||||||
|
|
||||||
private mouseOver = (event: React.MouseEvent) => {
|
private mouseOver = (event: React.MouseEvent) => {
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
this.setHover(true)
|
this.setHover(true)
|
||||||
@@ -226,10 +240,9 @@ class TreeNode extends React.Component<Props, State> {
|
|||||||
this.setState({ mouseOver: hover })
|
this.setState({ mouseOver: hover })
|
||||||
}, 45)
|
}, 45)
|
||||||
|
|
||||||
private didClickNode = (event: React.MouseEvent) => {
|
private toggleCollapsed = (event: React.MouseEvent) => {
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
this.toggle()
|
this.toggle()
|
||||||
this.didSelectTopic()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderNodes() {
|
private renderNodes() {
|
||||||
|
|||||||
@@ -11,29 +11,19 @@ export interface TreeNodeProps extends React.HTMLAttributes<HTMLElement> {
|
|||||||
collapsed?: boolean | undefined
|
collapsed?: boolean | undefined
|
||||||
classes: any
|
classes: any
|
||||||
didSelectNode: any
|
didSelectNode: any
|
||||||
|
toggleCollapsed: any
|
||||||
}
|
}
|
||||||
|
|
||||||
class TreeNodeTitle extends React.Component<TreeNodeProps, {}> {
|
class TreeNodeTitle extends React.Component<TreeNodeProps, {}> {
|
||||||
private mouseOver = (event: React.MouseEvent) => {
|
|
||||||
event.preventDefault()
|
|
||||||
this.selectTopic()
|
|
||||||
}
|
|
||||||
|
|
||||||
private selectTopic = debounce(() => {
|
|
||||||
if (this.props.treeNode.message) {
|
|
||||||
this.props.didSelectNode(this.props.treeNode)
|
|
||||||
}
|
|
||||||
}, 5)
|
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
const { classes, treeNode, style, className } = this.props
|
const { classes, treeNode, style, className } = this.props
|
||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
className={`${classes.title} ${className}`}
|
className={`${classes.title} ${className}`}
|
||||||
onMouseOver={treeNode.message ? this.mouseOver : undefined}
|
|
||||||
style={style}
|
style={style}
|
||||||
>
|
>
|
||||||
<span className={classes.expander}>{this.renderExpander()}</span> {this.renderSourceEdge()} {this.renderCollapsedSubnodes()} {this.renderValue()}
|
<span className={classes.expander} onClick={this.props.toggleCollapsed}>{this.renderExpander()}</span>
|
||||||
|
{this.renderSourceEdge()} {this.renderCollapsedSubnodes()} {this.renderValue()}
|
||||||
</span>
|
</span>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -81,6 +71,8 @@ const styles = (theme: Theme) => ({
|
|||||||
},
|
},
|
||||||
expander: {
|
expander: {
|
||||||
color: theme.palette.type === 'light' ? '#222' : '#eee',
|
color: theme.palette.type === 'light' ? '#222' : '#eee',
|
||||||
|
cursor: 'pointer' as 'pointer',
|
||||||
|
paddingRight: theme.spacing(0.25),
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
borderRadius: '4px',
|
borderRadius: '4px',
|
||||||
@@ -88,7 +80,7 @@ const styles = (theme: Theme) => ({
|
|||||||
display: 'inline-block' as 'inline-block',
|
display: 'inline-block' as 'inline-block',
|
||||||
whiteSpace: 'nowrap' as 'nowrap',
|
whiteSpace: 'nowrap' as 'nowrap',
|
||||||
padding: '1px 4px 0px 4px',
|
padding: '1px 4px 0px 4px',
|
||||||
height: '16px',
|
height: '14px',
|
||||||
margin: '1px 0px 2px 0px',
|
margin: '1px 0px 2px 0px',
|
||||||
},
|
},
|
||||||
collapsedSubnodes: {
|
collapsedSubnodes: {
|
||||||
|
|||||||
Reference in New Issue
Block a user