This commit is contained in:
Florian Scholdei
2019-04-17 14:27:17 +02:00
73 changed files with 2311 additions and 530 deletions

View File

@@ -11,7 +11,7 @@ class MailLink extends React.Component<Props> {
if (!address) {
return null;
}
return <a href={"mailto: " + address}>{address}</a>;
return <a href={"mailto:" + address}>{address}</a>;
}
}

View File

@@ -15,7 +15,8 @@ type Props = {
value?: string,
onChange: (value: string, name?: string) => void,
loading?: boolean,
helpText?: string
helpText?: string,
disabled?: boolean
};
class Select extends React.Component<Props> {
@@ -34,7 +35,7 @@ class Select extends React.Component<Props> {
};
render() {
const { options, value, label, helpText, loading } = this.props;
const { options, value, label, helpText, loading, disabled } = this.props;
const loadingClass = loading ? "is-loading" : "";
@@ -51,6 +52,7 @@ class Select extends React.Component<Props> {
}}
value={value}
onChange={this.handleInput}
disabled={disabled}
>
{options.map(opt => {
return (

View File

@@ -11,6 +11,7 @@ import {
import injectSheets from "react-jss";
import classNames from "classnames";
import { translate } from "react-i18next";
import {Button} from "../buttons";
const styles = {
panel: {
@@ -39,14 +40,16 @@ type Props = DiffObjectProps & {
};
type State = {
collapsed: boolean
collapsed: boolean,
sideBySide: boolean
};
class DiffFile extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = {
collapsed: false
collapsed: false,
sideBySide: false
};
}
@@ -56,6 +59,12 @@ class DiffFile extends React.Component<Props, State> {
}));
};
toggleSideBySide = () => {
this.setState(state => ({
sideBySide: !state.sideBySide
}));
};
setCollapse = (collapsed: boolean) => {
this.setState({
collapsed
@@ -149,10 +158,10 @@ class DiffFile extends React.Component<Props, State> {
file,
fileControlFactory,
fileAnnotationFactory,
sideBySide,
classes
classes,
t
} = this.props;
const { collapsed } = this.state;
const { collapsed, sideBySide } = this.state;
const viewType = sideBySide ? "split" : "unified";
let body = null;
@@ -173,14 +182,10 @@ class DiffFile extends React.Component<Props, State> {
}
const fileControls = fileControlFactory ? fileControlFactory(file, this.setCollapse) : null;
return (
<div className={classNames("panel", classes.panel)}>
return <div className={classNames("panel", classes.panel)}>
<div className="panel-heading">
<div className="level">
<div
className={classNames("level-left", classes.titleHeader)}
onClick={this.toggleCollapse}
>
<div className={classNames("level-left", classes.titleHeader)} onClick={this.toggleCollapse}>
<i className={icon} />
<span className={classes.title}>
{this.renderFileTitle(file)}
@@ -189,12 +194,21 @@ class DiffFile extends React.Component<Props, State> {
{this.renderChangeTag(file)}
</span>
</div>
<div className="level-right">{fileControls}</div>
<div className="level-right">
<Button action={this.toggleSideBySide}>
<span className="icon is-small">
<i className={classNames("fas", sideBySide ? "fa-align-left" : "fa-columns")} />
</span>
<span className="is-hidden-mobile">
{t(sideBySide ? "diff.combined" : "diff.sideBySide")}
</span>
</Button>
{fileControls}
</div>
</div>
</div>
{body}
</div>
);
</div>;
}
}

View File

@@ -2,13 +2,13 @@
import React from "react";
import type { Changeset } from "@scm-manager/ui-types";
import { ExtensionPoint } from "@scm-manager/ui-extensions";
import {translate} from "react-i18next";
import { translate } from "react-i18next";
type Props = {
changeset: Changeset,
// context props
t: (string) => string
t: string => string
};
class ChangesetAuthor extends React.Component<Props> {
@@ -28,7 +28,10 @@ class ChangesetAuthor extends React.Component<Props> {
renderWithMail(name: string, mail: string) {
const { t } = this.props;
return (
<a href={"mailto: " + mail} title={t("changeset.author.mailto") + " " + mail}>
<a
href={"mailto:" + mail}
title={t("changeset.author.mailto") + " " + mail}
>
{name}
</a>
);
@@ -44,7 +47,7 @@ class ChangesetAuthor extends React.Component<Props> {
props={{ changeset: this.props.changeset }}
renderAll={true}
/>
</>
</>
);
}
}

View File

@@ -11,11 +11,10 @@ type Props = {
changeset: Changeset,
// context props
t: (string) => string
}
t: string => string
};
class ChangesetButtonGroup extends React.Component<Props> {
render() {
const { repository, changeset, t } = this.props;
@@ -26,7 +25,7 @@ class ChangesetButtonGroup extends React.Component<Props> {
<ButtonGroup className="is-pulled-right">
<Button link={changesetLink}>
<span className="icon">
<i className="fas fa-code-branch"></i>
<i className="fas fa-exchange-alt" />
</span>
<span className="is-hidden-mobile is-hidden-tablet-only">
{t("changeset.buttons.details")}
@@ -34,7 +33,7 @@ class ChangesetButtonGroup extends React.Component<Props> {
</Button>
<Button link={sourcesLink}>
<span className="icon">
<i className="fas fa-code"></i>
<i className="fas fa-code" />
</span>
<span className="is-hidden-mobile is-hidden-tablet-only">
{t("changeset.buttons.sources")}
@@ -43,7 +42,6 @@ class ChangesetButtonGroup extends React.Component<Props> {
</ButtonGroup>
);
}
}
export default translate("repos")(ChangesetButtonGroup);