Vulcan/packages/nova-base-components/lib/comments/CommentsNode.jsx

41 lines
912 B
React
Raw Normal View History

import { Components, registerComponent } from 'meteor/nova:lib';
2016-03-17 17:48:25 +09:00
import React, { PropTypes, Component } from 'react';
2016-02-18 17:53:04 +09:00
2016-04-14 10:12:35 +09:00
class CommentsNode extends Component {
2016-02-18 17:53:04 +09:00
renderComment(comment) {
2016-02-18 17:53:04 +09:00
return (
<Components.CommentsItem comment={comment} key={comment._id} />
2016-02-18 17:53:04 +09:00
)
2016-03-17 17:48:25 +09:00
}
2016-02-18 17:53:04 +09:00
2016-11-09 11:55:12 +09:00
renderChildren(children) {
return (
<div className="comments-children">
2016-11-15 18:33:16 +01:00
{children.map(comment => <CommentsNode comment={comment} key={comment._id} />)}
2016-11-09 11:55:12 +09:00
</div>
)
}
2016-02-18 17:53:04 +09:00
render() {
const comment = this.props.comment;
2016-11-09 11:55:12 +09:00
const children = this.props.comment.childrenResults;
2016-02-18 17:53:04 +09:00
return (
<div className="comments-node">
2016-02-18 17:53:04 +09:00
{this.renderComment(comment)}
2016-11-09 11:55:12 +09:00
{children ? this.renderChildren(children) : null}
2016-02-18 17:53:04 +09:00
</div>
)
}
}
2016-03-17 17:48:25 +09:00
2016-04-14 10:12:35 +09:00
CommentsNode.propTypes = {
2016-03-17 17:48:25 +09:00
comment: React.PropTypes.object.isRequired, // the current comment
};
registerComponent('CommentsNode', CommentsNode);