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 && } +
    • + ); + })} +
    )}