Vulcan/packages/base-components/lib/comments/list/CommentNode.jsx

42 lines
992 B
React
Raw Normal View History

2016-03-17 17:48:25 +09:00
import React, { PropTypes, Component } from 'react';
2016-02-18 17:53:04 +09:00
2016-03-17 17:48:25 +09:00
class CommentNode extends Component {
2016-02-18 17:53:04 +09:00
renderComment(comment) {
({CommentItem} = Telescope.components);
return (
2016-02-18 21:39:33 +09:00
<CommentItem comment={comment} key={comment._id} currentUser={this.props.currentUser}/>
2016-02-18 17:53:04 +09:00
)
2016-03-17 17:48:25 +09:00
}
2016-02-18 17:53:04 +09:00
renderChildren(children) {
return (
<div className="comment-children">
2016-02-18 21:39:33 +09:00
{children.map(comment => <CommentNode comment={comment} key={comment._id} currentUser={this.props.currentUser}/>)}
2016-02-18 17:53:04 +09:00
</div>
)
2016-03-17 17:48:25 +09:00
}
2016-02-18 17:53:04 +09:00
render() {
const comment = this.props.comment;
const children = this.props.comment.childrenResults;
return (
2016-02-19 09:54:13 +09:00
<div className="comment-node">
2016-02-18 17:53:04 +09:00
{this.renderComment(comment)}
{children ? this.renderChildren(children) : ""}
</div>
)
}
2016-03-17 17:48:25 +09:00
};
CommentNode.propTypes = {
comment: React.PropTypes.object.isRequired, // the current comment
currentUser: React.PropTypes.object, // the current user
}
2016-02-18 17:53:04 +09:00
module.exports = CommentNode;