diff --git a/frontend/src/components/review-list-view/review-comments.js b/frontend/src/components/review-list-view/review-comments.js
index 8e8d61862e..dab0e537fc 100644
--- a/frontend/src/components/review-list-view/review-comments.js
+++ b/frontend/src/components/review-list-view/review-comments.js
@@ -1,7 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { processor } from '../../utils/seafile-markdown2html';
-import { Button, Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';
+import { Button, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Tooltip } from 'reactstrap';
import { seafileAPI } from '../../utils/seafile-api';
import { reviewID, gettext } from '../../utils/constants';
import moment from 'moment';
@@ -25,6 +25,8 @@ class ReviewComments extends React.Component {
userAvatar: `${window.location.host}media/avatars/default.png`,
inResizing: false,
commentFooterHeight: 30,
+ showResolvedComment: false,
+ openResolvedTooltip: false,
};
this.accountInfo = {};
}
@@ -70,6 +72,18 @@ class ReviewComments extends React.Component {
});
}
+ toggleResolvedComment = () => {
+ this.setState({
+ showResolvedComment: !this.state.showResolvedComment
+ });
+ }
+
+ toggleResolvedTooltip = () => {
+ this.setState({
+ openResolvedTooltip: !this.state.openResolvedTooltip
+ });
+ }
+
deleteComment = (event) => {
seafileAPI.deleteReviewComment(reviewID, event.target.id).then((res) => {
this.props.getCommentsNumber();
@@ -120,6 +134,15 @@ class ReviewComments extends React.Component {
{gettext('Comments')}
+
+
+
+ {gettext('Show/Hide resolved comments')}
+
{ this.props.commentsNumber == 0 &&
@@ -133,23 +156,19 @@ class ReviewComments extends React.Component {
{ (this.state.commentsList.length > 0 && this.props.commentsNumber > 0) &&
this.state.commentsList.map((item, index = 0, arr) => {
- if (item.resolved) {
- return null;
- }
- else {
- let oldTime = (new Date(item.created_at)).getTime();
- let time = moment(oldTime).format('YYYY-MM-DD HH:mm');
- return (
-
- );
- }
+ let oldTime = (new Date(item.created_at)).getTime();
+ let time = moment(oldTime).format('YYYY-MM-DD HH:mm');
+ return (
+
+ );
})
}
@@ -185,7 +204,9 @@ const commentItemPropTypes = {
deleteComment: PropTypes.func.isRequired,
resolveComment: PropTypes.func.isRequired,
accountInfo: PropTypes.object.isRequired,
- headUrl: PropTypes.string.isRequired
+ headUrl: PropTypes.string.isRequired,
+ resolved: PropTypes.bool.isRequired,
+ showResolvedComment: PropTypes.bool.isRequired
};
class CommentItem extends React.Component {
@@ -224,29 +245,33 @@ class CommentItem extends React.Component {
}
render() {
+ if (this.props.resolved && !this.props.showResolvedComment) {
+ return null;
+ }
return (
-
+
{this.props.name}
{this.props.time}
-
-
-
-
-
- {
- (this.props.user_email === this.props.accountInfo.email) &&
- {gettext('Delete')}
- }
- {gettext('Mark as resolved')}
-
-
+ { !this.props.resolved &&
+
+
+
+
+
+ { (this.props.user_email === this.props.accountInfo.email) &&
+ {gettext('Delete')}}
+ {gettext('Mark as resolved')}
+
+
+ }
diff --git a/frontend/src/css/review-comments.css b/frontend/src/css/review-comments.css
index 977e96c399..920e544bc3 100644
--- a/frontend/src/css/review-comments.css
+++ b/frontend/src/css/review-comments.css
@@ -30,8 +30,11 @@
.seafile-comment-title .seafile-comment-title-close:hover {
color: #888;
}
+.seafile-comment-title .seafile-comment-title-toggle {
+ display: flex;
+}
.seafile-comment-list {
- padding-top: 50px;
+ padding-top: 45px;
box-sizing: border-box;
height: 100%;
overflow-y: auto;
@@ -48,6 +51,9 @@
padding: 15px 10px;
overflow-y: hidden;
}
+.seafile-comment-item-resolved {
+ background-color: #e6ffed;
+}
.seafile-comment-item .seafile-comment-info {
display: flex;
}
diff --git a/media/css/seahub_react.css b/media/css/seahub_react.css
index 07da9a102d..7d8c4e1cfa 100644
--- a/media/css/seahub_react.css
+++ b/media/css/seahub_react.css
@@ -981,3 +981,8 @@ a.op-icon:focus {
}
/* end activity page */
+/* css to overwrite seahub-ui.css */
+.custom-switch-input:checked ~ .custom-switch-indicator {
+ background: #eb8205;
+ border: 1px solid #eb8205;
+}