mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-01-05 23:29:53 +01:00
@@ -2,16 +2,23 @@
|
||||
import React from "react";
|
||||
|
||||
type Props = {
|
||||
icon?: string,
|
||||
label: string,
|
||||
action: () => void
|
||||
};
|
||||
|
||||
class NavAction extends React.Component<Props> {
|
||||
render() {
|
||||
const { label, action } = this.props;
|
||||
const { label, icon, action } = this.props;
|
||||
|
||||
let showIcon = null;
|
||||
if (icon) {
|
||||
showIcon = (<><i className={icon}></i>{" "}</>);
|
||||
}
|
||||
|
||||
return (
|
||||
<li>
|
||||
<a onClick={action}>{label}</a>
|
||||
<a onClick={action}>{showIcon}{label}</a>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import {Link, Route} from "react-router-dom";
|
||||
|
||||
type Props = {
|
||||
to: string,
|
||||
icon?: string,
|
||||
label: string,
|
||||
activeOnlyWhenExact?: boolean,
|
||||
activeWhenMatch?: (route: any) => boolean
|
||||
@@ -23,10 +24,17 @@ class NavLink extends React.Component<Props> {
|
||||
}
|
||||
|
||||
renderLink = (route: any) => {
|
||||
const { to, label } = this.props;
|
||||
const { to, icon, label } = this.props;
|
||||
|
||||
let showIcon = null;
|
||||
if (icon) {
|
||||
showIcon = (<><i className={icon}></i>{" "}</>);
|
||||
}
|
||||
|
||||
return (
|
||||
<li>
|
||||
<Link className={this.isActive(route) ? "is-active" : ""} to={to}>
|
||||
{showIcon}
|
||||
{label}
|
||||
</Link>
|
||||
</li>
|
||||
@@ -35,6 +43,7 @@ class NavLink extends React.Component<Props> {
|
||||
|
||||
render() {
|
||||
const { to, activeOnlyWhenExact } = this.props;
|
||||
|
||||
return (
|
||||
<Route path={to} exact={activeOnlyWhenExact} children={this.renderLink} />
|
||||
);
|
||||
|
||||
@@ -70,7 +70,7 @@ class Profile extends React.Component<Props, State> {
|
||||
<div className="column">
|
||||
<Navigation>
|
||||
<Section label={t("profile.navigation-label")}>
|
||||
<NavLink to={`${url}`} label={t("profile.information")} />
|
||||
<NavLink to={`${url}`} icon="fas fa-info-circle" label={t("profile.information")} />
|
||||
</Section>
|
||||
<Section label={t("profile.actions-label")}>
|
||||
<NavLink
|
||||
|
||||
@@ -49,7 +49,7 @@ export class DeleteGroupNavLink extends React.Component<Props> {
|
||||
if (!this.isDeletable()) {
|
||||
return null;
|
||||
}
|
||||
return <NavAction label={t("delete-group-button.label")} action={action} />;
|
||||
return <NavAction icon="fas fa-times" label={t("delete-group-button.label")} action={action} />;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class EditGroupNavLink extends React.Component<Props, State> {
|
||||
if (!this.isEditable()) {
|
||||
return null;
|
||||
}
|
||||
return <NavLink label={t("edit-group-button.label")} to={editUrl} />;
|
||||
return <NavLink to={editUrl} icon="fas fa-cog" label={t("edit-group-button.label")} />;
|
||||
}
|
||||
|
||||
isEditable = () => {
|
||||
|
||||
@@ -17,7 +17,7 @@ class ChangePermissionNavLink extends React.Component<Props> {
|
||||
if (!this.hasPermissionToSetPermission()) {
|
||||
return null;
|
||||
}
|
||||
return <NavLink label={t("set-permissions-button.label")} to={permissionsUrl} />;
|
||||
return <NavLink to={permissionsUrl} label={t("set-permissions-button.label")} />;
|
||||
}
|
||||
|
||||
hasPermissionToSetPermission = () => {
|
||||
|
||||
@@ -131,6 +131,7 @@ class SingleGroup extends React.Component<Props> {
|
||||
<Section label={t("single-group.navigation-label")}>
|
||||
<NavLink
|
||||
to={`${url}`}
|
||||
icon="fas fa-info-circle"
|
||||
label={t("single-group.information-label")}
|
||||
/>
|
||||
<SetPermissionsNavLink
|
||||
@@ -149,7 +150,11 @@ class SingleGroup extends React.Component<Props> {
|
||||
deleteGroup={this.deleteGroup}
|
||||
/>
|
||||
<EditGroupNavLink group={group} editUrl={`${url}/edit`} />
|
||||
<NavLink to="/groups" label={t("single-group.back-label")} />
|
||||
<NavLink
|
||||
to="/groups"
|
||||
icon="fas fa-undo-alt"
|
||||
label={t("single-group.back-label")}
|
||||
/>
|
||||
</Section>
|
||||
</Navigation>
|
||||
</div>
|
||||
|
||||
@@ -51,7 +51,7 @@ class DeleteNavAction extends React.Component<Props> {
|
||||
if (!this.isDeletable()) {
|
||||
return null;
|
||||
}
|
||||
return <NavAction label={t("delete-nav-action.label")} action={action} />;
|
||||
return <NavAction action={action} icon="fas fa-times" label={t("delete-nav-action.label")} />;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class EditNavLink extends React.Component<Props> {
|
||||
return null;
|
||||
}
|
||||
const { editUrl, t } = this.props;
|
||||
return <NavLink to={editUrl} label={t("edit-nav-link.label")} />;
|
||||
return <NavLink to={editUrl} icon="fas fa-cog" label={t("edit-nav-link.label")} />;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,6 @@ describe("EditNavLink", () => {
|
||||
<EditNavLink repository={repository} editUrl="" />,
|
||||
options.get()
|
||||
);
|
||||
expect(navLink.text()).toBe("edit-nav-link.label");
|
||||
expect(navLink.text()).toBe(" edit-nav-link.label");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -20,7 +20,7 @@ class PermissionsNavLink extends React.Component<Props> {
|
||||
}
|
||||
const { permissionUrl, t } = this.props;
|
||||
return (
|
||||
<NavLink to={permissionUrl} label={t("repository-root.permissions")} />
|
||||
<NavLink to={permissionUrl} icon="fas fa-lock" label={t("repository-root.permissions")} />
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,6 @@ describe("PermissionsNavLink", () => {
|
||||
<PermissionsNavLink repository={repository} permissionUrl="" />,
|
||||
options.get()
|
||||
);
|
||||
expect(navLink.text()).toBe("repository-root.permissions");
|
||||
expect(navLink.text()).toBe(" repository-root.permissions");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -169,11 +169,12 @@ class RepositoryRoot extends React.Component<Props> {
|
||||
<div className="column">
|
||||
<Navigation>
|
||||
<Section label={t("repository-root.navigation-label")}>
|
||||
<NavLink to={url} label={t("repository-root.information")} />
|
||||
<NavLink to={url} icon="fas fa-info-circle" label={t("repository-root.information")} />
|
||||
<RepositoryNavLink
|
||||
repository={repository}
|
||||
linkName="changesets"
|
||||
to={`${url}/changesets/`}
|
||||
icon="fas fa-code-branch"
|
||||
label={t("repository-root.history")}
|
||||
activeWhenMatch={this.matches}
|
||||
activeOnlyWhenExact={false}
|
||||
@@ -182,6 +183,7 @@ class RepositoryRoot extends React.Component<Props> {
|
||||
repository={repository}
|
||||
linkName="sources"
|
||||
to={`${url}/sources`}
|
||||
icon="fas fa-code"
|
||||
label={t("repository-root.sources")}
|
||||
activeOnlyWhenExact={false}
|
||||
/>
|
||||
@@ -189,7 +191,6 @@ class RepositoryRoot extends React.Component<Props> {
|
||||
permissionUrl={`${url}/permissions`}
|
||||
repository={repository}
|
||||
/>
|
||||
<EditNavLink repository={repository} editUrl={`${url}/edit`} />
|
||||
<ExtensionPoint
|
||||
name="repository.navigation"
|
||||
props={extensionProps}
|
||||
@@ -198,7 +199,8 @@ class RepositoryRoot extends React.Component<Props> {
|
||||
</Section>
|
||||
<Section label={t("repository-root.actions-label")}>
|
||||
<DeleteNavAction repository={repository} delete={this.delete} />
|
||||
<NavLink to="/repos" label={t("repository-root.back-label")} />
|
||||
<EditNavLink repository={repository} editUrl={`${url}/edit`} />
|
||||
<NavLink to="/repos" icon="fas fa-undo" label={t("repository-root.back-label")} />
|
||||
</Section>
|
||||
</Navigation>
|
||||
</div>
|
||||
|
||||
@@ -49,7 +49,7 @@ class DeleteUserNavLink extends React.Component<Props> {
|
||||
if (!this.isDeletable()) {
|
||||
return null;
|
||||
}
|
||||
return <NavAction label={t("delete-user-button.label")} action={action} />;
|
||||
return <NavAction icon="fas fa-times" label={t("delete-user-button.label")} action={action} />;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class EditUserNavLink extends React.Component<Props> {
|
||||
if (!this.isEditable()) {
|
||||
return null;
|
||||
}
|
||||
return <NavLink label={t("edit-user-button.label")} to={editUrl} />;
|
||||
return <NavLink to={editUrl} icon="fas fa-cog" label={t("edit-user-button.label")} />;
|
||||
}
|
||||
|
||||
isEditable = () => {
|
||||
|
||||
@@ -17,7 +17,7 @@ class ChangePasswordNavLink extends React.Component<Props> {
|
||||
if (!this.hasPermissionToSetPassword()) {
|
||||
return null;
|
||||
}
|
||||
return <NavLink label={t("set-password-button.label")} to={passwordUrl} />;
|
||||
return <NavLink to={passwordUrl} label={t("set-password-button.label")} />;
|
||||
}
|
||||
|
||||
hasPermissionToSetPassword = () => {
|
||||
|
||||
@@ -17,7 +17,7 @@ class ChangePermissionNavLink extends React.Component<Props> {
|
||||
if (!this.hasPermissionToSetPermission()) {
|
||||
return null;
|
||||
}
|
||||
return <NavLink label={t("set-permissions-button.label")} to={permissionsUrl} />;
|
||||
return <NavLink to={permissionsUrl} label={t("set-permissions-button.label")} />;
|
||||
}
|
||||
|
||||
hasPermissionToSetPermission = () => {
|
||||
|
||||
@@ -122,6 +122,7 @@ class SingleUser extends React.Component<Props> {
|
||||
<Section label={t("single-user.navigation-label")}>
|
||||
<NavLink
|
||||
to={`${url}`}
|
||||
icon="fas fa-info-circle"
|
||||
label={t("single-user.information-label")}
|
||||
/>
|
||||
<EditUserNavLink user={user} editUrl={`${url}/edit`} />
|
||||
@@ -136,7 +137,7 @@ class SingleUser extends React.Component<Props> {
|
||||
</Section>
|
||||
<Section label={t("single-user.actions-label")}>
|
||||
<DeleteUserNavLink user={user} deleteUser={this.deleteUser} />
|
||||
<NavLink to="/users" label={t("single-user.back-label")} />
|
||||
<NavLink to="/users" icon="fas fa-undo" label={t("single-user.back-label")} />
|
||||
</Section>
|
||||
</Navigation>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user