 |
{repo.name} |
diff --git a/frontend/src/pages/org-admin/org-group-repos.js b/frontend/src/pages/org-admin/org-group-repos.js
index 5ffe7e6e62..4d62b84109 100644
--- a/frontend/src/pages/org-admin/org-group-repos.js
+++ b/frontend/src/pages/org-admin/org-group-repos.js
@@ -1,5 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
+import classnames from 'classnames';
import { Link } from '@gatsbyjs/reach-router';
import { orgAdminAPI } from '../../utils/org-admin-api';
import { gettext, siteRoot } from '../../utils/constants';
@@ -76,7 +77,7 @@ class Content extends Component {
return (
-
+
{/* icon*/} |
@@ -106,6 +107,7 @@ class Item extends Component {
constructor(props) {
super(props);
this.state = {
+ isHighlighted: false,
isOpIconShown: false,
deleted: false,
isDeleteRepoDialogOpen: false,
@@ -115,18 +117,19 @@ class Item extends Component {
handleMouseOver = () => {
this.setState({
+ isHighlighted: true,
isOpIconShown: true
});
};
handleMouseOut = () => {
this.setState({
+ isHighlighted: false,
isOpIconShown: false
});
};
- handleDeleteIconClick = (e) => {
- e.preventDefault();
+ handleDeleteIconClick = () => {
this.toggleDeleteRepoDialog();
};
@@ -154,7 +157,7 @@ class Item extends Component {
};
render() {
- const { deleted, isOpIconShown, isDeleteRepoDialogOpen } = this.state;
+ const { deleted, isOpIconShown, isDeleteRepoDialogOpen, isHighlighted } = this.state;
const repo = this.props.data;
if (deleted) {
@@ -163,7 +166,13 @@ class Item extends Component {
return (
-
+
|
@@ -171,7 +180,12 @@ class Item extends Component {
{Utils.bytesToSize(repo.size)} |
{repo.shared_by_name} |
-
+
+
|
{isDeleteRepoDialogOpen && (
diff --git a/frontend/src/pages/org-admin/org-groups-search-groups.js b/frontend/src/pages/org-admin/org-groups-search-groups.js
index 5f5c7d7231..b476d558cb 100644
--- a/frontend/src/pages/org-admin/org-groups-search-groups.js
+++ b/frontend/src/pages/org-admin/org-groups-search-groups.js
@@ -37,7 +37,6 @@ class GroupItem extends React.Component {
};
onDropdownToggleClick = (e) => {
- e.preventDefault();
this.toggleOperationMenu(e);
};
@@ -102,7 +101,7 @@ class GroupItem extends React.Component {
{isOperationMenuShow &&
{gettext('Name')}
{gettext('Creator')} |
{gettext('Created At')} |
- {gettext('Operations')} |
+ |
diff --git a/frontend/src/pages/org-admin/org-groups.js b/frontend/src/pages/org-admin/org-groups.js
index d064d4c32a..caa296a27f 100644
--- a/frontend/src/pages/org-admin/org-groups.js
+++ b/frontend/src/pages/org-admin/org-groups.js
@@ -179,7 +179,7 @@ class OrgGroups extends Component {
{gettext('Name')} |
{gettext('Creator')} |
{gettext('Created At')} |
- {gettext('Operations')} |
+ |
@@ -251,7 +251,6 @@ class GroupItem extends React.Component {
};
onDropdownToggleClick = (e) => {
- e.preventDefault();
this.toggleOperationMenu(e);
};
@@ -319,7 +318,7 @@ class GroupItem extends React.Component {
{isOperationMenuShow &&
{
- e.preventDefault();
this.toggleOperationMenu(e);
};
@@ -207,7 +206,7 @@ class RepoItem extends React.Component {
{this.state.showMenu &&
{fileEvent.user_name}{' '}
-
+
{gettext('Only Show')}{' '}
@@ -225,7 +225,7 @@ class FileAuditItem extends React.Component {
{ fileEvent.repo_name &&
-
+
{gettext('Only Show')}{' '}{fileEvent.repo_name}
diff --git a/frontend/src/pages/org-admin/org-logs-file-update.js b/frontend/src/pages/org-admin/org-logs-file-update.js
index 6417c791f1..8bec78e3f5 100644
--- a/frontend/src/pages/org-admin/org-logs-file-update.js
+++ b/frontend/src/pages/org-admin/org-logs-file-update.js
@@ -210,7 +210,7 @@ class FileUpdateItem extends React.Component {
{fileEvent.user_name}{' '}
-
+
{gettext('Only Show')}{' '}{fileEvent.user_name}
@@ -236,7 +236,7 @@ class FileUpdateItem extends React.Component {
{ fileEvent.repo_name &&
-
+
{gettext('Only Show')}{' '}
diff --git a/frontend/src/pages/org-admin/org-logs-perm-audit.js b/frontend/src/pages/org-admin/org-logs-perm-audit.js
index 9a7c4682a9..899206488f 100644
--- a/frontend/src/pages/org-admin/org-logs-perm-audit.js
+++ b/frontend/src/pages/org-admin/org-logs-perm-audit.js
@@ -157,7 +157,7 @@ class PermAuditItem extends React.Component {
{permEvent.from_user_name}{' '}
-
+
{gettext('Only Show')}{' '}
diff --git a/frontend/src/pages/org-admin/org-user-item.js b/frontend/src/pages/org-admin/org-user-item.js
index f0452c3409..64bbb38f86 100644
--- a/frontend/src/pages/org-admin/org-user-item.js
+++ b/frontend/src/pages/org-admin/org-user-item.js
@@ -85,7 +85,6 @@ class UserItem extends React.Component {
};
onDropdownToggleClick = (e) => {
- e.preventDefault();
this.toggleOperationMenu(e);
};
@@ -176,7 +175,7 @@ class UserItem extends React.Component {
{isOperationMenuShow && (
{gettext('Name')}
{name || '--'}
-
+
{gettext('Contact Email')}
{contact_email || '--'}
-
+
{gettext('Organization')}
@@ -151,7 +152,7 @@ class Content extends Component {
{gettext('Space Used / Quota')}
{`${Utils.bytesToSize(quota_usage)}${quota_total > 0 ? ' / ' + Utils.bytesToSize(quota_total) : ''}`}
-
+
{isSetNameDialogOpen &&
diff --git a/frontend/src/pages/org-admin/org-user-repos.js b/frontend/src/pages/org-admin/org-user-repos.js
index 81e5b207b4..88f38db736 100644
--- a/frontend/src/pages/org-admin/org-user-repos.js
+++ b/frontend/src/pages/org-admin/org-user-repos.js
@@ -1,6 +1,7 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import dayjs from 'dayjs';
+import classnames from 'classnames';
import { orgAdminAPI } from '../../utils/org-admin-api';
import { gettext } from '../../utils/constants';
import { Utils } from '../../utils/utils';
@@ -102,6 +103,7 @@ class Item extends Component {
constructor(props) {
super(props);
this.state = {
+ isHighlighted: false,
isOpIconShown: false,
deleted: false,
isDeleteRepoDialogOpen: false,
@@ -111,18 +113,19 @@ class Item extends Component {
handleMouseOver = () => {
this.setState({
+ isHighlighted: true,
isOpIconShown: true
});
};
handleMouseOut = () => {
this.setState({
+ isHighlighted: false,
isOpIconShown: false
});
};
- handleDeleteIconClick = (e) => {
- e.preventDefault();
+ handleDeleteIconClick = () => {
this.toggleDeleteRepoDialog();
};
@@ -150,7 +153,7 @@ class Item extends Component {
};
render() {
- const { deleted, isOpIconShown, isDeleteRepoDialogOpen } = this.state;
+ const { deleted, isOpIconShown, isDeleteRepoDialogOpen, isHighlighted } = this.state;
const repo = this.props.data;
if (deleted) {
@@ -159,7 +162,13 @@ class Item extends Component {
return (
-
+
|
@@ -167,7 +176,13 @@ class Item extends Component {
{Utils.bytesToSize(repo.size)} |
{dayjs(repo.last_modified).format('YYYY-MM-DD')} |
-
+
+
|
{isDeleteRepoDialogOpen && (
diff --git a/frontend/src/pages/sys-admin/groups/group-members.js b/frontend/src/pages/sys-admin/groups/group-members.js
index 936dae22ed..4829c2eca9 100644
--- a/frontend/src/pages/sys-admin/groups/group-members.js
+++ b/frontend/src/pages/sys-admin/groups/group-members.js
@@ -60,14 +60,16 @@ class Content extends Component {
{items.map((item, index) => {
- return ( );
+ return (
+
+ );
})}
@@ -174,7 +176,13 @@ class Item extends Component {
{item.role != 'Owner' &&
-
+
+
}
|
diff --git a/frontend/src/pages/sys-admin/groups/group-repos.js b/frontend/src/pages/sys-admin/groups/group-repos.js
index 8bdcccccfd..15bd20b164 100644
--- a/frontend/src/pages/sys-admin/groups/group-repos.js
+++ b/frontend/src/pages/sys-admin/groups/group-repos.js
@@ -1,5 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
+import classnames from 'classnames';
import { Utils } from '../../../utils/utils';
import { systemAdminAPI } from '../../../utils/system-admin-api';
import { siteRoot, gettext, isPro } from '../../../utils/constants';
@@ -32,7 +33,7 @@ class Content extends Component {
);
const table = (
-
+
{/* icon */} |
@@ -44,11 +45,13 @@ class Content extends Component {
{items.map((item, index) => {
- return ( );
+ return (
+
+ );
})}
@@ -75,23 +78,27 @@ class Item extends Component {
constructor(props) {
super(props);
this.state = {
+ isHighlighted: false,
isOpIconShown: false,
isUnshareRepoDialogOpen: false
};
}
handleMouseEnter = () => {
- this.setState({ isOpIconShown: true });
+ this.setState({
+ isHighlighted: true,
+ isOpIconShown: true
+ });
};
handleMouseLeave = () => {
- this.setState({ isOpIconShown: false });
+ this.setState({
+ isHighlighted: false,
+ isOpIconShown: false
+ });
};
- toggleUnshareRepoDialog = (e) => {
- if (e) {
- e.preventDefault();
- }
+ toggleUnshareRepoDialog = () => {
this.setState({ isUnshareRepoDialogOpen: !this.state.isUnshareRepoDialogOpen });
};
@@ -117,7 +124,7 @@ class Item extends Component {
};
render() {
- let { isOpIconShown, isUnshareRepoDialogOpen } = this.state;
+ let { isOpIconShown, isUnshareRepoDialogOpen, isHighlighted } = this.state;
let { item } = this.props;
let iconUrl = Utils.getLibIconUrl(item);
@@ -128,7 +135,13 @@ class Item extends Component {
return (
-
+
 |
{this.renderRepoName()} |
{Utils.bytesToSize(item.size)} |
@@ -136,7 +149,13 @@ class Item extends Component {
-
+
+
|
{isUnshareRepoDialogOpen &&
diff --git a/frontend/src/pages/sys-admin/orgs/org-groups.js b/frontend/src/pages/sys-admin/orgs/org-groups.js
index e5c36911d7..0cf5dc1818 100644
--- a/frontend/src/pages/sys-admin/orgs/org-groups.js
+++ b/frontend/src/pages/sys-admin/orgs/org-groups.js
@@ -1,6 +1,7 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import dayjs from 'dayjs';
+import classnames from 'classnames';
import { Utils } from '../../../utils/utils';
import { systemAdminAPI } from '../../../utils/system-admin-api';
import { siteRoot, gettext } from '../../../utils/constants';
@@ -42,11 +43,13 @@ class Content extends Component {
{items.map((item, index) => {
- return ( );
+ return (
+
+ );
})}
@@ -73,23 +76,27 @@ class Item extends Component {
constructor(props) {
super(props);
this.state = {
+ isHighlighted: false,
isOpIconShown: false,
isDeleteDialogOpen: false
};
}
handleMouseEnter = () => {
- this.setState({ isOpIconShown: true });
+ this.setState({
+ isHighlighted: true,
+ isOpIconShown: true
+ });
};
handleMouseLeave = () => {
- this.setState({ isOpIconShown: false });
+ this.setState({
+ isHighlighted: false,
+ isOpIconShown: false
+ });
};
- toggleDeleteDialog = (e) => {
- if (e) {
- e.preventDefault();
- }
+ toggleDeleteDialog = () => {
this.setState({ isDeleteDialogOpen: !this.state.isDeleteDialogOpen });
};
@@ -100,7 +107,7 @@ class Item extends Component {
render() {
const { item } = this.props;
- const { isOpIconShown, isDeleteDialogOpen } = this.state;
+ const { isOpIconShown, isDeleteDialogOpen, isHighlighted } = this.state;
const itemName = '' + Utils.HTMLescape(item.group_name) + '';
const deleteDialogMsg = gettext('Are you sure you want to delete {placeholder} ?').replace('{placeholder}', itemName);
@@ -109,12 +116,23 @@ class Item extends Component {
return (
-
+
{item.group_name} |
|
{dayjs(item.created_at).format('YYYY-MM-DD HH:mm:ss')} |
-
+
+
|
{isDeleteDialogOpen &&
diff --git a/frontend/src/pages/sys-admin/orgs/org-repos.js b/frontend/src/pages/sys-admin/orgs/org-repos.js
index 861310cc2f..cecb54a87c 100644
--- a/frontend/src/pages/sys-admin/orgs/org-repos.js
+++ b/frontend/src/pages/sys-admin/orgs/org-repos.js
@@ -1,5 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
+import classnames from 'classnames';
import { Utils } from '../../../utils/utils';
import { systemAdminAPI } from '../../../utils/system-admin-api';
import { gettext } from '../../../utils/constants';
@@ -25,7 +26,7 @@ class Content extends Component {
);
const table = (
-
+
|
@@ -37,11 +38,13 @@ class Content extends Component {
{items.map((item, index) => {
- return ( );
+ return (
+
+ );
})}
@@ -64,17 +67,24 @@ class Item extends Component {
constructor(props) {
super(props);
this.state = {
+ isHighlighted: false,
isOpIconShown: false,
isDeleteDialogOpen: false
};
}
handleMouseEnter = () => {
- this.setState({ isOpIconShown: true });
+ this.setState({
+ isHighlighted: true,
+ isOpIconShown: true
+ });
};
handleMouseLeave = () => {
- this.setState({ isOpIconShown: false });
+ this.setState({
+ isHighlighted: false,
+ isOpIconShown: false
+ });
};
toggleDeleteDialog = (e) => {
@@ -90,7 +100,7 @@ class Item extends Component {
render() {
const { item } = this.props;
- const { isOpIconShown, isDeleteDialogOpen } = this.state;
+ const { isOpIconShown, isDeleteDialogOpen, isHighlighted } = this.state;
const iconUrl = Utils.getLibIconUrl(item);
const iconTitle = Utils.getLibIconTitle(item);
@@ -100,7 +110,13 @@ class Item extends Component {
return (
-
+
 |
{item.repo_name} |
{item.repo_id} |
@@ -113,7 +129,12 @@ class Item extends Component {
}
-
+
+
|
{isDeleteDialogOpen &&
diff --git a/frontend/src/pages/sys-admin/repos/dir-content.js b/frontend/src/pages/sys-admin/repos/dir-content.js
index 0c7f6c6f94..a4391e2492 100644
--- a/frontend/src/pages/sys-admin/repos/dir-content.js
+++ b/frontend/src/pages/sys-admin/repos/dir-content.js
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import { Link } from '@gatsbyjs/reach-router';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
+import classnames from 'classnames';
import { gettext } from '../../../utils/constants';
import { Utils } from '../../../utils/utils';
import Loading from '../../../components/loading';
@@ -14,18 +15,21 @@ class DirentItem extends React.Component {
constructor(props) {
super(props);
this.state = {
+ isHighlighted: false,
isOpIconShown: false
};
}
handleMouseOver = () => {
this.setState({
+ isHighlighted: true,
isOpIconShown: true
});
};
handleMouseOut = () => {
this.setState({
+ isHighlighted: false,
isOpIconShown: false
});
};
@@ -34,24 +38,28 @@ class DirentItem extends React.Component {
this.props.openFolder(this.props.dirent);
};
- deleteDirent = (e) => {
- e.preventDefault();
+ deleteDirent = () => {
this.props.deleteDirent(this.props.dirent);
};
- downloadDirent = (e) => {
- e.preventDefault();
+ downloadDirent = () => {
this.props.downloadDirent(this.props.dirent);
};
render() {
- let { isOpIconShown } = this.state;
+ let { isOpIconShown, isHighlighted } = this.state;
let { dirent, fromSystemRepo } = this.props;
let iconUrl = Utils.getDirentIcon(dirent);
return (
-
+
 |
{dirent.is_file ?
@@ -61,10 +69,20 @@ class DirentItem extends React.Component {
|
{isOpIconShown && fromSystemRepo &&
-
+
+
}
{isOpIconShown && dirent.is_file &&
-
+
+
}
|
{dirent.size} |
diff --git a/frontend/src/pages/sys-admin/users/user-shared-repos.js b/frontend/src/pages/sys-admin/users/user-shared-repos.js
index dca877305f..9f312aa8ce 100644
--- a/frontend/src/pages/sys-admin/users/user-shared-repos.js
+++ b/frontend/src/pages/sys-admin/users/user-shared-repos.js
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import { Link } from '@gatsbyjs/reach-router';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
+import classnames from 'classnames';
import { Utils } from '../../../utils/utils';
import { systemAdminAPI } from '../../../utils/system-admin-api';
import { isPro, siteRoot, gettext } from '../../../utils/constants';
@@ -24,7 +25,7 @@ class Content extends Component {
return {errorMsg} ;
} else {
const table = (
-
+
|
@@ -57,6 +58,25 @@ Content.propTypes = {
class Item extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ isHighlighted: false
+ };
+ }
+
+ handleMouseOver = () => {
+ this.setState({
+ isHighlighted: true
+ });
+ };
+
+ handleMouseOut = () => {
+ this.setState({
+ isHighlighted: false
+ });
+ };
+
renderRepoName = () => {
const { item } = this.props;
const repo = item;
@@ -89,8 +109,15 @@ class Item extends Component {
const { item } = this.props;
const iconUrl = Utils.getLibIconUrl(item);
const iconTitle = Utils.getLibIconTitle(item);
+ const { isHighlighted } = this.state;
return (
-
+
 |
{this.renderRepoName()} |
{this.getOwnerLink()} |
diff --git a/media/css/seahub_react.css b/media/css/seahub_react.css
index d13d51f89e..30b0373241 100644
--- a/media/css/seahub_react.css
+++ b/media/css/seahub_react.css
@@ -567,7 +567,7 @@ a, a:hover {
.op-icon {
font-size: 1rem;
line-height: 1;
- color: #999;
+ color: #666;
cursor: pointer;
display: inline-flex;
width: 24px;
@@ -580,7 +580,7 @@ a, a:hover {
.op-icon:focus,
.op-icon:hover {
- color: #666;
+ color: #666; /* to overwrite the styles for `a:hover` */
text-decoration: none;
background: #e5e5e5;
}
@@ -590,10 +590,6 @@ a, a:hover {
background: #efefef; /* for .op-icon shown in white containers */
}
-.tr-highlight .op-icon {
- color: #666;
-}
-
.action-icon,
.attr-action-icon {
margin-left: 0.5rem;
|