diff --git a/frontend/src/components/group-members.js b/frontend/src/components/group-members.js index 5092ce0555..3d5467a787 100644 --- a/frontend/src/components/group-members.js +++ b/frontend/src/components/group-members.js @@ -26,9 +26,9 @@ class GroupMembers extends React.Component {
+ | {gettext('Name')} | -{gettext('Role')} | +{gettext('Role')} | ||
---|---|---|---|---|---|
{item.name} |
{((isOwner === false) || (isOwner === true && item.role === 'Owner')) &&
diff --git a/frontend/src/css/group-view.css b/frontend/src/css/group-view.css
index 49b5cb3827..d31de1937d 100644
--- a/frontend/src/css/group-view.css
+++ b/frontend/src/css/group-view.css
@@ -1,30 +1,3 @@
-#group-setting-popover,
-#group-members-popover {
- top: 42px;
- right: 0;
-}
-.group-member-list-header {
- border-bottom: 1px solid #e3e3e5;
- padding-bottom: 10px;
- margin-bottom: 0px;
-}
-.group-member-list {
- max-height: 400px;
- border-top: 0;
- margin-top: 0;
- padding-top: 0;
-}
-.group-member-list .user-item {
- line-height: 2rem;
-}
-.group-member-list .user-item:hover {
- background-color: #f8f8f8;
-}
-.group-member-list .user-item .group-member-name {
- margin: 0 5px;
- max-width: 70%;
-}
-.group-member-list .user-item .group-member-admin {
- color: #888;
- font-size: 12px;
+.group-member:hover {
+ background: #f5f5f5;
}
diff --git a/frontend/src/css/groups.css b/frontend/src/css/groups.css
index e56b0baa13..69189295ed 100644
--- a/frontend/src/css/groups.css
+++ b/frontend/src/css/groups.css
@@ -1,8 +1,3 @@
-.department-group-icon {
- margin-left: 0.25rem;
- color:#888;
-}
-
.group-top-op-icon { /* for cur-view-path*/
display: inline-block;
font-size: 22px;
diff --git a/frontend/src/pages/groups/group-view.js b/frontend/src/pages/groups/group-view.js
index 584a2f817c..377c82a4b1 100644
--- a/frontend/src/pages/groups/group-view.js
+++ b/frontend/src/pages/groups/group-view.js
@@ -10,9 +10,9 @@ import ModalPortal from '../../components/modal-portal';
import Group from '../../models/group';
import Repo from '../../models/repo';
import toaster from '../../components/toast';
-import OpIcon from '../../components/op-icon';
import CommonToolbar from '../../components/toolbar/common-toolbar';
import CreateRepoDialog from '../../components/dialog/create-repo-dialog';
+import GroupMembersDialog from '../../components/dialog/group-members-dialog';
import DismissGroupDialog from '../../components/dialog/dismiss-group-dialog';
import RenameGroupDialog from '../../components/dialog/rename-group-dialog';
import TransferGroupDialog from '../../components/dialog/transfer-group-dialog';
@@ -21,6 +21,7 @@ import ManageMembersDialog from '../../components/dialog/manage-members-dialog';
import LeaveGroupDialog from '../../components/dialog/leave-group-dialog';
import SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view';
import SortOptionsDialog from '../../components/dialog/sort-options';
+import SingleDropdownToolbar from '../../components/toolbar/single-dropdown-toolbar';
import '../../css/group-view.css';
@@ -63,6 +64,7 @@ class GroupView extends React.Component {
showManageMembersDialog: false,
groupMembers: [],
isLeaveGroupDialogOpen: false,
+ isMembersDialogOpen: false
};
}
@@ -94,6 +96,7 @@ class GroupView extends React.Component {
repoList: [] // empty it for the current group
}, () => {
this.loadRepos(this.state.currentPage);
+ this.listGroupMembers();
});
}).catch((error) => {
this.setState({
@@ -257,12 +260,6 @@ class GroupView extends React.Component {
this.setState({repoList: repoList});
};
- toggleGroupDropdown = () => {
- this.setState({
- showGroupDropdown: !this.state.showGroupDropdown
- });
- };
-
toggleDismissGroupDialog = () => {
this.setState({
showDismissGroupDialog: !this.state.showDismissGroupDialog,
@@ -385,38 +382,57 @@ class GroupView extends React.Component {
}
};
- render() {
- let { errMessage, emptyTip, currentGroup, isDepartmentGroup, isStaff } = this.state;
- let isShowSettingIcon = false;
- if (currentGroup) { // group message is loaded
- if (currentGroup.parent_group_id === 0) {
- isShowSettingIcon = true;
- } else {
- if (currentGroup.admins.indexOf(username) > -1) {
- isShowSettingIcon = true;
+ toggleMembersDialog = () => {
+ this.setState({
+ isMembersDialogOpen: !this.state.isMembersDialogOpen
+ });
+ };
+
+ getOpList = () => {
+ const { currentGroup, isDepartmentGroup, isStaff, isOwner } = this.state;
+ const opList = [];
+ if ((!isDepartmentGroup && canAddRepo) ||
+ (isDepartmentGroup && isStaff)) {
+ opList.push({'text': gettext('New Library'), 'onClick': this.onCreateRepoToggle});
+ }
+ opList.push({'text': gettext('Members'), 'onClick': this.toggleMembersDialog});
+ if (currentGroup) {
+ if (isStaff || isOwner) {
+ opList.push({'text': gettext('Rename'), 'onClick': this.toggleRenameGroupDialog});
+ if (isOwner) {
+ opList.push({'text': gettext('Transfer'), 'onClick': this.toggleTransferGroupDialog});
+ }
+ opList.push({'text': gettext('Import members'), 'onClick': this.toggleImportMembersDialog});
+ opList.push({'text': gettext('Manage members'), 'onClick': this.toggleManageMembersDialog});
+ if (isOwner) {
+ opList.push({'text': gettext('Delete group'), 'onClick': this.toggleDismissGroupDialog});
}
}
+
+ if (!isOwner && !isDepartmentGroup) {
+ opList.push({'text': gettext('Leave group'), 'onClick': this.toggleLeaveGroupDialog});
+ }
}
+
+ return opList;
+ };
+
+ render() {
+ const { errMessage, emptyTip, currentGroup, isDepartmentGroup,
+ groupMembers, isMembersDialogOpen
+ } = this.state;
+
let useRate = 0;
if (isDepartmentGroup && currentGroup.group_quota) {
useRate = currentGroup.group_quota_usage / currentGroup.group_quota * 100 + '%';
}
+
+ const opList = this.getOpList();
return (
-
-
- {((!isDepartmentGroup && canAddRepo) || (isDepartmentGroup && isStaff)) && (
- Utils.isDesktop() ? (
-
- ) : (
-
- )
- )}
-
+
{currentGroup && (
+
+ {isDepartmentGroup &&
+
+ }
{currentGroup.name}
+
+
{isDepartmentGroup && (
-
-
{Utils.bytesToSize(currentGroup.group_quota_usage)} / {Utils.bytesToSize(currentGroup.group_quota)}
-
+
- { isShowSettingIcon &&
-
-
- }
-
- {(this.state.isStaff || this.state.isOwner) &&
-
-
-
- }
{(!Utils.isDesktop() && this.state.repoList.length > 0) && }
{this.state.isSortOptionsDialogOpen &&
-
-
|