mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 07:55:47 +01:00
migrate ui-components from flow to typescript
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { Changeset } from '@scm-manager/ui-types';
|
||||
import { ExtensionPoint } from '@scm-manager/ui-extensions';
|
||||
import { translate } from 'react-i18next';
|
||||
import React from "react";
|
||||
import { Changeset } from "@scm-manager/ui-types";
|
||||
import { ExtensionPoint } from "@scm-manager/ui-extensions";
|
||||
import { translate } from "react-i18next";
|
||||
|
||||
type Props = {
|
||||
changeset: Changeset;
|
||||
@@ -28,8 +28,8 @@ class ChangesetAuthor extends React.Component<Props> {
|
||||
const { t } = this.props;
|
||||
return (
|
||||
<a
|
||||
href={'mailto:' + mail}
|
||||
title={t('changeset.author.mailto') + ' ' + mail}
|
||||
href={"mailto:" + mail}
|
||||
title={t("changeset.author.mailto") + " " + mail}
|
||||
>
|
||||
{name}
|
||||
</a>
|
||||
@@ -40,11 +40,11 @@ class ChangesetAuthor extends React.Component<Props> {
|
||||
const { t } = this.props;
|
||||
return (
|
||||
<>
|
||||
{t('changeset.author.prefix')} {child}
|
||||
{t("changeset.author.prefix")} {child}
|
||||
<ExtensionPoint
|
||||
name="changesets.author.suffix"
|
||||
props={{
|
||||
changeset: this.props.changeset,
|
||||
changeset: this.props.changeset
|
||||
}}
|
||||
renderAll={true}
|
||||
/>
|
||||
@@ -53,4 +53,4 @@ class ChangesetAuthor extends React.Component<Props> {
|
||||
}
|
||||
}
|
||||
|
||||
export default translate('repos')(ChangesetAuthor);
|
||||
export default translate("repos")(ChangesetAuthor);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { Changeset, Repository } from '@scm-manager/ui-types';
|
||||
import { ButtonAddons, Button } from '../../buttons';
|
||||
import { createChangesetLink, createSourcesLink } from './changesets';
|
||||
import { translate } from 'react-i18next';
|
||||
import React from "react";
|
||||
import { Changeset, Repository } from "@scm-manager/ui-types";
|
||||
import { ButtonAddons, Button } from "../../buttons";
|
||||
import { createChangesetLink, createSourcesLink } from "./changesets";
|
||||
import { translate } from "react-i18next";
|
||||
|
||||
type Props = {
|
||||
repository: Repository;
|
||||
@@ -22,13 +22,13 @@ class ChangesetButtonGroup extends React.Component<Props> {
|
||||
<Button
|
||||
link={changesetLink}
|
||||
icon="exchange-alt"
|
||||
label={t('changeset.buttons.details')}
|
||||
label={t("changeset.buttons.details")}
|
||||
reducedMobile={true}
|
||||
/>
|
||||
<Button
|
||||
link={sourcesLink}
|
||||
icon="code"
|
||||
label={t('changeset.buttons.sources')}
|
||||
label={t("changeset.buttons.sources")}
|
||||
reducedMobile={true}
|
||||
/>
|
||||
</ButtonAddons>
|
||||
@@ -36,4 +36,4 @@ class ChangesetButtonGroup extends React.Component<Props> {
|
||||
}
|
||||
}
|
||||
|
||||
export default translate('repos')(ChangesetButtonGroup);
|
||||
export default translate("repos")(ChangesetButtonGroup);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { Changeset } from '@scm-manager/ui-types';
|
||||
import LoadingDiff from '../LoadingDiff';
|
||||
import Notification from '../../Notification';
|
||||
import { translate } from 'react-i18next';
|
||||
import React from "react";
|
||||
import { Changeset, Link } from "@scm-manager/ui-types";
|
||||
import LoadingDiff from "../LoadingDiff";
|
||||
import Notification from "../../Notification";
|
||||
import { translate } from "react-i18next";
|
||||
|
||||
type Props = {
|
||||
changeset: Changeset;
|
||||
@@ -18,7 +18,11 @@ class ChangesetDiff extends React.Component<Props> {
|
||||
}
|
||||
|
||||
createUrl(changeset: Changeset) {
|
||||
return changeset._links.diff.href + '?format=GIT';
|
||||
if (changeset._links.diff) {
|
||||
const link = changeset._links.diff as Link;
|
||||
return link.href + "?format=GIT";
|
||||
}
|
||||
throw new Error("diff link is missing");
|
||||
}
|
||||
|
||||
render() {
|
||||
@@ -26,7 +30,7 @@ class ChangesetDiff extends React.Component<Props> {
|
||||
if (!this.isDiffSupported(changeset)) {
|
||||
return (
|
||||
<Notification type="danger">
|
||||
{t('changeset.diffNotSupported')}
|
||||
{t("changeset.diffNotSupported")}
|
||||
</Notification>
|
||||
);
|
||||
} else {
|
||||
@@ -36,4 +40,4 @@ class ChangesetDiff extends React.Component<Props> {
|
||||
}
|
||||
}
|
||||
|
||||
export default translate('repos')(ChangesetDiff);
|
||||
export default translate("repos")(ChangesetDiff);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Link } from 'react-router-dom';
|
||||
import React from 'react';
|
||||
import { Changeset, Repository } from '@scm-manager/ui-types';
|
||||
import { createChangesetLink } from './changesets';
|
||||
import { Link } from "react-router-dom";
|
||||
import React from "react";
|
||||
import { Changeset, Repository } from "@scm-manager/ui-types";
|
||||
import { createChangesetLink } from "./changesets";
|
||||
|
||||
type Props = {
|
||||
repository: Repository;
|
||||
@@ -11,7 +11,7 @@ type Props = {
|
||||
|
||||
export default class ChangesetId extends React.Component<Props> {
|
||||
static defaultProps = {
|
||||
link: true,
|
||||
link: true
|
||||
};
|
||||
|
||||
shortId = (changeset: Changeset) => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import ChangesetRow from './ChangesetRow';
|
||||
import React from 'react';
|
||||
import ChangesetRow from "./ChangesetRow";
|
||||
import React from "react";
|
||||
|
||||
import { Changeset, Repository } from '@scm-manager/ui-types';
|
||||
import { Changeset, Repository } from "@scm-manager/ui-types";
|
||||
|
||||
type Props = {
|
||||
repository: Repository;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import React from 'react';
|
||||
import { Interpolate, translate } from 'react-i18next';
|
||||
import classNames from 'classnames';
|
||||
import styled from 'styled-components';
|
||||
import { ExtensionPoint } from '@scm-manager/ui-extensions';
|
||||
import { Changeset, Repository } from '@scm-manager/ui-types';
|
||||
import DateFromNow from '../../DateFromNow';
|
||||
import { AvatarWrapper, AvatarImage } from '../../avatar';
|
||||
import { parseDescription } from './changesets';
|
||||
import ChangesetId from './ChangesetId';
|
||||
import ChangesetAuthor from './ChangesetAuthor';
|
||||
import ChangesetTags from './ChangesetTags';
|
||||
import ChangesetButtonGroup from './ChangesetButtonGroup';
|
||||
import React from "react";
|
||||
import { Interpolate, translate } from "react-i18next";
|
||||
import classNames from "classnames";
|
||||
import styled from "styled-components";
|
||||
import { ExtensionPoint } from "@scm-manager/ui-extensions";
|
||||
import { Changeset, Repository } from "@scm-manager/ui-types";
|
||||
import DateFromNow from "../../DateFromNow";
|
||||
import { AvatarWrapper, AvatarImage } from "../../avatar";
|
||||
import { parseDescription } from "./changesets";
|
||||
import ChangesetId from "./ChangesetId";
|
||||
import ChangesetAuthor from "./ChangesetAuthor";
|
||||
import ChangesetTags from "./ChangesetTags";
|
||||
import ChangesetButtonGroup from "./ChangesetButtonGroup";
|
||||
|
||||
type Props = {
|
||||
repository: Repository;
|
||||
@@ -90,7 +90,7 @@ class ChangesetRow extends React.Component<Props> {
|
||||
name="changeset.description"
|
||||
props={{
|
||||
changeset,
|
||||
value: description.title,
|
||||
value: description.title
|
||||
}}
|
||||
renderAll={false}
|
||||
>
|
||||
@@ -122,7 +122,7 @@ class ChangesetRow extends React.Component<Props> {
|
||||
</VCenteredColumn>
|
||||
</div>
|
||||
</div>
|
||||
<VCenteredChildColumn className={classNames('column', 'is-flex')}>
|
||||
<VCenteredChildColumn className={classNames("column", "is-flex")}>
|
||||
<ChangesetButtonGroup
|
||||
repository={repository}
|
||||
changeset={changeset}
|
||||
@@ -131,7 +131,7 @@ class ChangesetRow extends React.Component<Props> {
|
||||
name="changeset.right"
|
||||
props={{
|
||||
repository,
|
||||
changeset,
|
||||
changeset
|
||||
}}
|
||||
renderAll={true}
|
||||
/>
|
||||
@@ -142,4 +142,4 @@ class ChangesetRow extends React.Component<Props> {
|
||||
}
|
||||
}
|
||||
|
||||
export default translate('repos')(ChangesetRow);
|
||||
export default translate("repos")(ChangesetRow);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { Tag } from '@scm-manager/ui-types';
|
||||
import ChangesetTagBase from './ChangesetTagBase';
|
||||
import React from "react";
|
||||
import { Tag } from "@scm-manager/ui-types";
|
||||
import ChangesetTagBase from "./ChangesetTagBase";
|
||||
|
||||
type Props = {
|
||||
tag: Tag;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import Tag from '../../Tag';
|
||||
import React from "react";
|
||||
import Tag from "../../Tag";
|
||||
|
||||
type Props = {
|
||||
icon: string;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { Changeset } from '@scm-manager/ui-types';
|
||||
import ChangesetTag from './ChangesetTag';
|
||||
import ChangesetTagsCollapsed from './ChangesetTagsCollapsed';
|
||||
import React from "react";
|
||||
import { Changeset } from "@scm-manager/ui-types";
|
||||
import ChangesetTag from "./ChangesetTag";
|
||||
import ChangesetTagsCollapsed from "./ChangesetTagsCollapsed";
|
||||
|
||||
type Props = {
|
||||
changeset: Changeset;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { translate } from 'react-i18next';
|
||||
import { Tag } from '@scm-manager/ui-types';
|
||||
import Tooltip from '../../Tooltip';
|
||||
import ChangesetTagBase from './ChangesetTagBase';
|
||||
import React from "react";
|
||||
import { translate } from "react-i18next";
|
||||
import { Tag } from "@scm-manager/ui-types";
|
||||
import Tooltip from "../../Tooltip";
|
||||
import ChangesetTagBase from "./ChangesetTagBase";
|
||||
|
||||
type Props = {
|
||||
tags: Tag[];
|
||||
@@ -14,16 +14,16 @@ type Props = {
|
||||
class ChangesetTagsCollapsed extends React.Component<Props> {
|
||||
render() {
|
||||
const { tags, t } = this.props;
|
||||
const message = tags.map(tag => tag.name).join(', ');
|
||||
const message = tags.map(tag => tag.name).join(", ");
|
||||
return (
|
||||
<Tooltip location="top" message={message}>
|
||||
<ChangesetTagBase
|
||||
icon="tags"
|
||||
label={tags.length + ' ' + t('changeset.tags')}
|
||||
label={tags.length + " " + t("changeset.tags")}
|
||||
/>
|
||||
</Tooltip>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default translate('repos')(ChangesetTagsCollapsed);
|
||||
export default translate("repos")(ChangesetTagsCollapsed);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import { parseDescription } from './changesets';
|
||||
import { parseDescription } from "./changesets";
|
||||
|
||||
describe('parseDescription tests', () => {
|
||||
it('should return a description with title and message', () => {
|
||||
const desc = parseDescription('Hello\nTrillian');
|
||||
expect(desc.title).toBe('Hello');
|
||||
expect(desc.message).toBe('Trillian');
|
||||
describe("parseDescription tests", () => {
|
||||
it("should return a description with title and message", () => {
|
||||
const desc = parseDescription("Hello\nTrillian");
|
||||
expect(desc.title).toBe("Hello");
|
||||
expect(desc.message).toBe("Trillian");
|
||||
});
|
||||
|
||||
it('should return a description with title and without message', () => {
|
||||
const desc = parseDescription('Hello Trillian');
|
||||
expect(desc.title).toBe('Hello Trillian');
|
||||
it("should return a description with title and without message", () => {
|
||||
const desc = parseDescription("Hello Trillian");
|
||||
expect(desc.title).toBe("Hello Trillian");
|
||||
});
|
||||
|
||||
it('should return an empty description for undefined', () => {
|
||||
it("should return an empty description for undefined", () => {
|
||||
const desc = parseDescription();
|
||||
expect(desc.title).toBe('');
|
||||
expect(desc.message).toBe('');
|
||||
expect(desc.title).toBe("");
|
||||
expect(desc.message).toBe("");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Changeset, Repository } from '@scm-manager/ui-types';
|
||||
import { Changeset, Repository } from "@scm-manager/ui-types";
|
||||
|
||||
export type Description = {
|
||||
title: string;
|
||||
@@ -7,24 +7,24 @@ export type Description = {
|
||||
|
||||
export function createChangesetLink(
|
||||
repository: Repository,
|
||||
changeset: Changeset,
|
||||
changeset: Changeset
|
||||
) {
|
||||
return `/repo/${repository.namespace}/${repository.name}/changeset/${changeset.id}`;
|
||||
}
|
||||
|
||||
export function createSourcesLink(
|
||||
repository: Repository,
|
||||
changeset: Changeset,
|
||||
changeset: Changeset
|
||||
) {
|
||||
return `/repo/${repository.namespace}/${repository.name}/sources/${changeset.id}`;
|
||||
}
|
||||
|
||||
export function parseDescription(description?: string): Description {
|
||||
const desc = description ? description : '';
|
||||
const lineBreak = desc.indexOf('\n');
|
||||
const desc = description ? description : "";
|
||||
const lineBreak = desc.indexOf("\n");
|
||||
|
||||
let title;
|
||||
let message = '';
|
||||
let message = "";
|
||||
|
||||
if (lineBreak > 0) {
|
||||
title = desc.substring(0, lineBreak);
|
||||
@@ -35,6 +35,6 @@ export function parseDescription(description?: string): Description {
|
||||
|
||||
return {
|
||||
title,
|
||||
message,
|
||||
message
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import * as changesets from './changesets';
|
||||
import * as changesets from "./changesets";
|
||||
export { changesets };
|
||||
|
||||
export { default as ChangesetAuthor } from './ChangesetAuthor';
|
||||
export { default as ChangesetButtonGroup } from './ChangesetButtonGroup';
|
||||
export { default as ChangesetDiff } from './ChangesetDiff';
|
||||
export { default as ChangesetId } from './ChangesetId';
|
||||
export { default as ChangesetList } from './ChangesetList';
|
||||
export { default as ChangesetRow } from './ChangesetRow';
|
||||
export { default as ChangesetTag } from './ChangesetTag';
|
||||
export { default as ChangesetTags } from './ChangesetTags';
|
||||
export { default as ChangesetTagsCollapsed } from './ChangesetTagsCollapsed';
|
||||
export { default as ChangesetAuthor } from "./ChangesetAuthor";
|
||||
export { default as ChangesetButtonGroup } from "./ChangesetButtonGroup";
|
||||
export { default as ChangesetDiff } from "./ChangesetDiff";
|
||||
export { default as ChangesetId } from "./ChangesetId";
|
||||
export { default as ChangesetList } from "./ChangesetList";
|
||||
export { default as ChangesetRow } from "./ChangesetRow";
|
||||
export { default as ChangesetTag } from "./ChangesetTag";
|
||||
export { default as ChangesetTags } from "./ChangesetTags";
|
||||
export { default as ChangesetTagsCollapsed } from "./ChangesetTagsCollapsed";
|
||||
|
||||
Reference in New Issue
Block a user