diff --git a/frontend/src/css/files-activities.css b/frontend/src/css/files-activities.css
index f3b8e6b4dc..d149615ee3 100644
--- a/frontend/src/css/files-activities.css
+++ b/frontend/src/css/files-activities.css
@@ -58,6 +58,7 @@
.activity-user-list {
min-height: 4rem;
+ max-height: 200px;
}
.activity-user-item {
@@ -67,3 +68,7 @@
.activity-user-item:hover {
background: #f5f5f5;
}
+
+.activity-user-name {
+ font-size: 14px;
+}
diff --git a/frontend/src/pages/dashboard/files-activities.js b/frontend/src/pages/dashboard/files-activities.js
index 36bf9876fc..5ad4183aca 100644
--- a/frontend/src/pages/dashboard/files-activities.js
+++ b/frontend/src/pages/dashboard/files-activities.js
@@ -51,7 +51,8 @@ class FilesActivities extends Component {
availableUsers.push({
email: item.author_email,
name: item.author_name,
- avatar_url: item.avatar_url
+ avatar_url: item.avatar_url,
+ isSelected: false
});
}
});
@@ -146,7 +147,8 @@ class FilesActivities extends Component {
availableUsers.push({
email: item.author_email,
name: item.author_name,
- avatar_url: item.avatar_url
+ avatar_url: item.avatar_url,
+ isSelected: false
});
}
});
@@ -200,6 +202,18 @@ class FilesActivities extends Component {
});
};
+ toggleSelectUser = (user) => {
+ const { availableUsers } = this.state;
+ this.setState({
+ availableUsers: availableUsers.map(item => {
+ if (item.email == user.email) {
+ item.isSelected = !user.isSelected;
+ }
+ return item;
+ })
+ });
+ };
+
handleScroll = (event) => {
if (!this.state.isLoadingMore && this.state.hasMore) {
const clientHeight = event.target.clientHeight;
@@ -242,6 +256,7 @@ class FilesActivities extends Component {
availableUsers={availableUsers}
currentSelectedUsers={targetUsers}
setTargetUsers={this.setTargetUsers}
+ toggleSelectUser={this.toggleSelectUser}
/>
)}
diff --git a/frontend/src/pages/dashboard/user-selector.js b/frontend/src/pages/dashboard/user-selector.js
index 75396560a0..945c789dc4 100644
--- a/frontend/src/pages/dashboard/user-selector.js
+++ b/frontend/src/pages/dashboard/user-selector.js
@@ -9,6 +9,7 @@ const propTypes = {
availableUsers: PropTypes.array.isRequired,
currentSelectedUsers: PropTypes.array.isRequired,
setTargetUsers: PropTypes.func.isRequired,
+ toggleSelectUser: PropTypes.func.isRequired
};
class UserSelector extends Component {
@@ -17,14 +18,7 @@ class UserSelector extends Component {
super(props);
this.state = {
isPopoverOpen: false,
- availableUsers: props.availableUsers.map(item => {
- item.isSelected = false;
- return item;
- }),
- filteredAvailableUsers: props.availableUsers.map(item => {
- item.isSelected = false;
- return item;
- })
+ query: ''
};
}
@@ -41,14 +35,14 @@ class UserSelector extends Component {
if (isPopoverOpen && !this.userSelector.contains(e.target)) {
this.togglePopover();
}
- }
+ };
togglePopover = () => {
this.setState({
isPopoverOpen: !this.state.isPopoverOpen
}, () => {
if (!this.state.isPopoverOpen) {
- const { availableUsers } = this.state;
+ const { availableUsers } = this.props;
const selectedUsers = availableUsers.filter(item => item.isSelected);
this.props.setTargetUsers(selectedUsers);
}
@@ -58,36 +52,24 @@ class UserSelector extends Component {
onToggleClick = (e) => {
e.stopPropagation();
this.togglePopover();
- }
+ };
- searchUsers = (e) => {
- const { availableUsers } = this.state;
- const query = e.target.value.trim();
- const filteredAvailableUsers = availableUsers.filter(item => item.email.indexOf(query) != -1);
+ onQueryChange = (e) => {
this.setState({
- filteredAvailableUsers: filteredAvailableUsers
+ query: e.target.value
});
};
toggleSelectItem = (e, targetItem) => {
e.stopPropagation();
- const { availableUsers } = this.state;
- const handleItem = (item) => {
- if (item.email == targetItem.email) {
- item.isSelected = !targetItem.isSelected;
- }
- return item;
- };
-
- this.setState({
- availableUsers: availableUsers.map(handleItem)
- });
+ this.props.toggleSelectUser(targetItem);
};
render() {
- const { isPopoverOpen, availableUsers, filteredAvailableUsers } = this.state;
- const { currentSelectedUsers } = this.props;
+ const { isPopoverOpen, query } = this.state;
+ const { currentSelectedUsers, availableUsers } = this.props;
const selectedUsers = availableUsers.filter(item => item.isSelected);
+ const filteredAvailableUsers = query.trim() ? availableUsers.filter(item => item.email.indexOf(query.trim()) != -1) : availableUsers;
return (
@@ -99,38 +81,38 @@ class UserSelector extends Component {
{isPopoverOpen && (
this.userSelector = ref}>
-
+
{selectedUsers.map((item, index) => {
return (
-
- {item.name}
+ {item.name}
{this.toggleSelectItem(e, item);}}>
);
})}
-
+
-
- {filteredAvailableUsers.map((item, index) => {
- return (
- - {this.toggleSelectItem(e, item);}}>
-
-

-
{item.name}
-
- {item.isSelected && }
-
- );
- })}
-
+
+ {filteredAvailableUsers.map((item, index) => {
+ return (
+ - {this.toggleSelectItem(e, item);}}>
+
+

+
{item.name}
+
+ {item.isSelected && }
+
+ );
+ })}
+
)}