mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-03 16:10:26 +00:00
update
This commit is contained in:
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
import { gettext } from '../../utils/constants';
|
import { gettext } from '../../utils/constants';
|
||||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Table } from 'reactstrap';
|
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Table } from 'reactstrap';
|
||||||
import { seafileAPI } from '../../utils/seafile-api.js';
|
import { seafileAPI } from '../../utils/seafile-api.js';
|
||||||
import RoleEditor from '../select-editor/role-eidtor';
|
import RoleEditor from '../select-editor/role-editor';
|
||||||
import UserSelect from '../user-select.js';
|
import UserSelect from '../user-select.js';
|
||||||
import '../../css/manage-members-dialog.css';
|
import '../../css/manage-members-dialog.css';
|
||||||
|
|
||||||
@@ -22,6 +22,7 @@ class ManageMembersDialog extends React.Component {
|
|||||||
groupMembers: [],
|
groupMembers: [],
|
||||||
selectedOption: null,
|
selectedOption: null,
|
||||||
errMessage: [],
|
errMessage: [],
|
||||||
|
isItemFreezed: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +64,12 @@ class ManageMembersDialog extends React.Component {
|
|||||||
this.listGroupMembers();
|
this.listGroupMembers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleItemFreezed = (isFreezed) => {
|
||||||
|
this.setState({
|
||||||
|
isItemFreezed: isFreezed
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
toggle = () => {
|
toggle = () => {
|
||||||
this.props.toggleManageMembersDialog();
|
this.props.toggleManageMembersDialog();
|
||||||
}
|
}
|
||||||
@@ -99,7 +106,7 @@ class ManageMembersDialog extends React.Component {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
<div className="manage-members">
|
<div className="manage-members">
|
||||||
<Table hover size="sm" className="manage-members-table">
|
<Table size="sm" className="manage-members-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th width="15%"></th>
|
<th width="15%"></th>
|
||||||
@@ -119,6 +126,8 @@ class ManageMembersDialog extends React.Component {
|
|||||||
onGroupMembersChange={this.onGroupMembersChange}
|
onGroupMembersChange={this.onGroupMembersChange}
|
||||||
groupID={this.props.groupID}
|
groupID={this.props.groupID}
|
||||||
isOwner={this.props.isOwner}
|
isOwner={this.props.isOwner}
|
||||||
|
isItemFreezed={this.state.isItemFreezed}
|
||||||
|
toggleItemFreezed={this.toggleItemFreezed}
|
||||||
/>
|
/>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
@@ -150,6 +159,9 @@ class Member extends React.PureComponent {
|
|||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.roles = ['Admin', 'Member'];
|
this.roles = ['Admin', 'Member'];
|
||||||
|
this.state = ({
|
||||||
|
highlight: false,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeUserRole = (role) => {
|
onChangeUserRole = (role) => {
|
||||||
@@ -157,6 +169,9 @@ class Member extends React.PureComponent {
|
|||||||
seafileAPI.setGroupAdmin(this.props.groupID, this.props.item.email, isAdmin).then((res) => {
|
seafileAPI.setGroupAdmin(this.props.groupID, this.props.item.email, isAdmin).then((res) => {
|
||||||
this.props.onGroupMembersChange();
|
this.props.onGroupMembersChange();
|
||||||
});
|
});
|
||||||
|
this.setState({
|
||||||
|
highlight: false,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteMember = (name) => {
|
deleteMember = (name) => {
|
||||||
@@ -165,10 +180,25 @@ class Member extends React.PureComponent {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleMouseOver = () => {
|
||||||
|
if (this.props.isItemFreezed) return;
|
||||||
|
this.setState({
|
||||||
|
highlight: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleMouseLeave = () => {
|
||||||
|
if (this.props.isItemFreezed) return;
|
||||||
|
this.setState({
|
||||||
|
highlight: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { item, isOwner } = this.props;
|
const { item, isOwner } = this.props;
|
||||||
|
const deleteAuthority = (item.role !== 'Owner' && isOwner === true) || (item.role === 'Member' && isOwner === false);
|
||||||
return(
|
return(
|
||||||
<tr>
|
<tr onMouseOver={this.handleMouseOver} onMouseLeave={this.handleMouseLeave} className={this.state.highlight ? 'editing' : ''}>
|
||||||
<th scope="row"><img className="avatar" src={item.avatar_url} alt=""/></th>
|
<th scope="row"><img className="avatar" src={item.avatar_url} alt=""/></th>
|
||||||
<td>{item.name}</td>
|
<td>{item.name}</td>
|
||||||
<td>
|
<td>
|
||||||
@@ -178,15 +208,16 @@ class Member extends React.PureComponent {
|
|||||||
{(isOwner === true && item.role !== 'Owner') &&
|
{(isOwner === true && item.role !== 'Owner') &&
|
||||||
<RoleEditor
|
<RoleEditor
|
||||||
isTextMode={true}
|
isTextMode={true}
|
||||||
isEditIconShow={true}
|
isEditIconShow={this.state.highlight}
|
||||||
currentRole={this.props.item.role}
|
currentRole={item.role}
|
||||||
roles={this.roles}
|
roles={this.roles}
|
||||||
onRoleChanged={this.onChangeUserRole}
|
onRoleChanged={this.onChangeUserRole}
|
||||||
|
toggleItemFreezed={this.props.toggleItemFreezed}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{((item.role !== 'Owner' && isOwner === true) || (item.role === 'Member' && isOwner === false)) &&
|
{(deleteAuthority && !this.props.isItemFreezed) &&
|
||||||
<i
|
<i
|
||||||
className="fa fa-times delete-group-member-icon"
|
className="fa fa-times delete-group-member-icon"
|
||||||
name={item.email}
|
name={item.email}
|
||||||
|
@@ -9,6 +9,7 @@ const propTypes = {
|
|||||||
roles: PropTypes.array.isRequired,
|
roles: PropTypes.array.isRequired,
|
||||||
currentRole: PropTypes.string.isRequired,
|
currentRole: PropTypes.string.isRequired,
|
||||||
onRoleChanged: PropTypes.func.isRequired,
|
onRoleChanged: PropTypes.func.isRequired,
|
||||||
|
toggleItemFreezed: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
class RoleEditor extends React.Component {
|
class RoleEditor extends React.Component {
|
||||||
@@ -32,6 +33,7 @@ class RoleEditor extends React.Component {
|
|||||||
currentOption={this.props.currentRole}
|
currentOption={this.props.currentRole}
|
||||||
onOptionChanged={this.props.onRoleChanged}
|
onOptionChanged={this.props.onRoleChanged}
|
||||||
translateOption={this.translateRole}
|
translateOption={this.translateRole}
|
||||||
|
toggleItemFreezed={this.props.toggleItemFreezed}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
@@ -12,6 +12,7 @@ const propTypes = {
|
|||||||
translateOption: PropTypes.func.isRequired,
|
translateOption: PropTypes.func.isRequired,
|
||||||
translateExplanation: PropTypes.func,
|
translateExplanation: PropTypes.func,
|
||||||
onOptionChanged: PropTypes.func.isRequired,
|
onOptionChanged: PropTypes.func.isRequired,
|
||||||
|
toggleItemFreezed: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
class SelectEditor extends React.Component {
|
class SelectEditor extends React.Component {
|
||||||
@@ -47,6 +48,7 @@ class SelectEditor extends React.Component {
|
|||||||
onEditPermission = (e) => {
|
onEditPermission = (e) => {
|
||||||
e.nativeEvent.stopImmediatePropagation();
|
e.nativeEvent.stopImmediatePropagation();
|
||||||
this.setState({isEditing: true});
|
this.setState({isEditing: true});
|
||||||
|
this.props.toggleItemFreezed && this.props.toggleItemFreezed(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
onOptionChanged = (e) => {
|
onOptionChanged = (e) => {
|
||||||
@@ -55,6 +57,7 @@ class SelectEditor extends React.Component {
|
|||||||
this.props.onOptionChanged(permission);
|
this.props.onOptionChanged(permission);
|
||||||
}
|
}
|
||||||
this.setState({isEditing: false});
|
this.setState({isEditing: false});
|
||||||
|
this.props.toggleItemFreezed && this.props.toggleItemFreezed(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
onSelectHandler = (e) => {
|
onSelectHandler = (e) => {
|
||||||
@@ -63,6 +66,7 @@ class SelectEditor extends React.Component {
|
|||||||
|
|
||||||
onHideSelect = () => {
|
onHideSelect = () => {
|
||||||
this.setState({isEditing: false});
|
this.setState({isEditing: false});
|
||||||
|
this.props.toggleItemFreezed && this.props.toggleItemFreezed(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
@@ -22,6 +22,10 @@
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.manage-members-table .editing {
|
||||||
|
background-color: rgba(0, 0, 0, 0.04);
|
||||||
|
}
|
||||||
|
|
||||||
.toggle-group-admin-icon:hover,
|
.toggle-group-admin-icon:hover,
|
||||||
.delete-group-member-icon:hover {
|
.delete-group-member-icon:hover {
|
||||||
color: #333;
|
color: #333;
|
||||||
|
Reference in New Issue
Block a user