UNPKG

http-teapot-comment

Version:

A comment system for your website

91 lines (84 loc) 2.58 kB
/** * @jsx React.DOM */ var CommentList = React.createClass({ render: function () { var form , el , className = 'CommentList' , title = '' , style = {} , activeCommentId = this.props.activeCommentId , comments = this.props.comments , replyTo = this.props.replyTo , likeCallback = this.props.likeCallback , listRepliesCallback = this.props.listRepliesCallback , toggleCommentCallback = this.props.toggleCommentCallback; if (this.props.user.logged_in === true) { form = ( <Comment key="form" replyTo={replyTo} avatar={this.props.user.image} submitCallback={this.props.submitCallback} toggleCommentCallback={toggleCommentCallback} editable="true"> Write a comment here </Comment> ); } else { form = ( <div className="CommentList-login"> <a className="CommentList-login-link" href="/login/">Login</a> to comment on this thread </div> ); } if (replyTo != 0) { style = { marginTop: this.props.offsetTop + 'px' }; title = 'Latest replies'; } else { title = 'Latest comments'; } if (!comments.length) { title = 'No comments, maybe you could post one?'; } if (this.props.isSelected) { className += ' is-selected'; } return ( <div className={className} data-reply-to={this.props.replyTo} style={style}> {form} <h3 className="CommentList-title">{title}</h3> <ul className="CommentList-element"> {comments.map(function (comment) { var isActive = false; if (comment.id === activeCommentId) { isActive = true; } return ( <li className="CommentList-element-item"> <Comment key={comment.id} active={isActive} replyTo={replyTo} liked={comment.liked} likes={comment.likes} replies={comment.replies} avatar={comment.user.image} timestamp={comment.timestamp} listRepliesCallback={listRepliesCallback} toggleCommentCallback={toggleCommentCallback} likeCallback={likeCallback} editable="false"> {comment.body} </Comment> </li> ); })} </ul> </div> ); } });