From 97c4b0998b776f8227f81b6a621a1d093ef7eeb5 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 10 Dec 2018 08:45:59 +0100 Subject: [PATCH 1/4] move changesets and avatar components to ui-components --- .../ui-components/src/avatar/Avatar.js | 8 +++++ .../ui-components/src/avatar}/AvatarImage.js | 16 +++++---- .../src/avatar}/AvatarWrapper.js | 3 +- .../ui-components/src/avatar/index.js | 4 +++ .../packages/ui-components/src/index.js | 2 ++ .../src/repos}/changesets/ChangesetAuthor.js | 7 ++-- .../src/repos}/changesets/ChangesetId.js | 0 .../src/repos}/changesets/ChangesetList.js | 4 +-- .../src/repos}/changesets/ChangesetRow.js | 17 ++++------ .../src/repos}/changesets/ChangesetTag.js | 0 .../src/repos}/changesets/changesets.js | 0 .../src/repos}/changesets/changesets.test.js | 0 .../src/repos/changesets/index.js | 9 +++++ .../packages/ui-components/src/repos/index.js | 3 ++ scm-ui/src/containers/ProfileInfo.js | 7 ++-- .../components/changesets/ChangesetDetails.js | 34 +++++++++++-------- scm-ui/src/repos/containers/Changesets.js | 3 +- .../repos/sources/containers/HistoryView.js | 4 +-- 18 files changed, 74 insertions(+), 47 deletions(-) create mode 100644 scm-ui-components/packages/ui-components/src/avatar/Avatar.js rename {scm-ui/src/repos/components/changesets => scm-ui-components/packages/ui-components/src/avatar}/AvatarImage.js (53%) rename {scm-ui/src/repos/components/changesets => scm-ui-components/packages/ui-components/src/avatar}/AvatarWrapper.js (76%) create mode 100644 scm-ui-components/packages/ui-components/src/avatar/index.js rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/ChangesetAuthor.js (79%) rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/ChangesetId.js (100%) rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/ChangesetList.js (85%) rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/ChangesetRow.js (86%) rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/ChangesetTag.js (100%) rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/changesets.js (100%) rename {scm-ui/src/repos/components => scm-ui-components/packages/ui-components/src/repos}/changesets/changesets.test.js (100%) create mode 100644 scm-ui-components/packages/ui-components/src/repos/changesets/index.js create mode 100644 scm-ui-components/packages/ui-components/src/repos/index.js diff --git a/scm-ui-components/packages/ui-components/src/avatar/Avatar.js b/scm-ui-components/packages/ui-components/src/avatar/Avatar.js new file mode 100644 index 0000000000..4108ae354b --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/avatar/Avatar.js @@ -0,0 +1,8 @@ +// @flow + +export type Person = { + name: string, + mail?: string +}; + +export const EXTENSION_POINT = "avatar.factory"; diff --git a/scm-ui/src/repos/components/changesets/AvatarImage.js b/scm-ui-components/packages/ui-components/src/avatar/AvatarImage.js similarity index 53% rename from scm-ui/src/repos/components/changesets/AvatarImage.js rename to scm-ui-components/packages/ui-components/src/avatar/AvatarImage.js index 6d730e87cd..930c172b0b 100644 --- a/scm-ui/src/repos/components/changesets/AvatarImage.js +++ b/scm-ui-components/packages/ui-components/src/avatar/AvatarImage.js @@ -1,26 +1,28 @@ //@flow import React from "react"; import {binder} from "@scm-manager/ui-extensions"; -import type {Changeset} from "@scm-manager/ui-types"; -import {Image} from "@scm-manager/ui-components"; +import {Image} from ".."; +import type { Person } from "./Avatar"; +import { EXTENSION_POINT } from "./Avatar"; + type Props = { - changeset: Changeset + person: Person }; class AvatarImage extends React.Component { render() { - const { changeset } = this.props; + const { person } = this.props; - const avatarFactory = binder.getExtension("changeset.avatar-factory"); + const avatarFactory = binder.getExtension(EXTENSION_POINT); if (avatarFactory) { - const avatar = avatarFactory(changeset); + const avatar = avatarFactory(person); return ( {changeset.author.name} ); } diff --git a/scm-ui/src/repos/components/changesets/AvatarWrapper.js b/scm-ui-components/packages/ui-components/src/avatar/AvatarWrapper.js similarity index 76% rename from scm-ui/src/repos/components/changesets/AvatarWrapper.js rename to scm-ui-components/packages/ui-components/src/avatar/AvatarWrapper.js index c014b33281..50f584f753 100644 --- a/scm-ui/src/repos/components/changesets/AvatarWrapper.js +++ b/scm-ui-components/packages/ui-components/src/avatar/AvatarWrapper.js @@ -1,6 +1,7 @@ //@flow import * as React from "react"; import {binder} from "@scm-manager/ui-extensions"; +import { EXTENSION_POINT } from "./Avatar"; type Props = { children: React.Node @@ -8,7 +9,7 @@ type Props = { class AvatarWrapper extends React.Component { render() { - if (binder.hasExtension("changeset.avatar-factory")) { + if (binder.hasExtension(EXTENSION_POINT)) { return <>{this.props.children}; } return null; diff --git a/scm-ui-components/packages/ui-components/src/avatar/index.js b/scm-ui-components/packages/ui-components/src/avatar/index.js new file mode 100644 index 0000000000..c1f09fcaec --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/avatar/index.js @@ -0,0 +1,4 @@ +// @flow + +export { default as AvatarWrapper } from "./AvatarWrapper"; +export { default as AvatarImage } from "./AvatarImage"; diff --git a/scm-ui-components/packages/ui-components/src/index.js b/scm-ui-components/packages/ui-components/src/index.js index 334e0a696c..4648d5532d 100644 --- a/scm-ui-components/packages/ui-components/src/index.js +++ b/scm-ui-components/packages/ui-components/src/index.js @@ -27,9 +27,11 @@ export { default as Autocomplete} from "./Autocomplete"; export { apiClient, NOT_FOUND_ERROR_MESSAGE, UNAUTHORIZED_ERROR_MESSAGE } from "./apiclient.js"; +export * from "./avatar"; export * from "./buttons"; export * from "./config"; export * from "./forms"; export * from "./layout"; export * from "./modals"; export * from "./navigation"; +export * from "./repos"; diff --git a/scm-ui/src/repos/components/changesets/ChangesetAuthor.js b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetAuthor.js similarity index 79% rename from scm-ui/src/repos/components/changesets/ChangesetAuthor.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetAuthor.js index 778d4b5073..5bb6437575 100644 --- a/scm-ui/src/repos/components/changesets/ChangesetAuthor.js +++ b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetAuthor.js @@ -1,13 +1,12 @@ //@flow - import React from "react"; -import type { Changeset } from "@scm-manager/ui-types"; +import type {Changeset} from "@scm-manager/ui-types"; type Props = { changeset: Changeset }; -export default class ChangesetAuthor extends React.Component { +class ChangesetAuthor extends React.Component { render() { const { changeset } = this.props; if (!changeset.author) { @@ -35,3 +34,5 @@ export default class ChangesetAuthor extends React.Component { } } } + +export default ChangesetAuthor; diff --git a/scm-ui/src/repos/components/changesets/ChangesetId.js b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetId.js similarity index 100% rename from scm-ui/src/repos/components/changesets/ChangesetId.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetId.js diff --git a/scm-ui/src/repos/components/changesets/ChangesetList.js b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetList.js similarity index 85% rename from scm-ui/src/repos/components/changesets/ChangesetList.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetList.js index 860b7ba8b0..74ec816369 100644 --- a/scm-ui/src/repos/components/changesets/ChangesetList.js +++ b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetList.js @@ -1,8 +1,8 @@ // @flow import ChangesetRow from "./ChangesetRow"; import React from "react"; + import type { Changeset, Repository } from "@scm-manager/ui-types"; -import classNames from "classnames"; type Props = { repository: Repository, @@ -21,7 +21,7 @@ class ChangesetList extends React.Component { /> ); }); - return
{content}
; + return
{content}
; } } diff --git a/scm-ui/src/repos/components/changesets/ChangesetRow.js b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetRow.js similarity index 86% rename from scm-ui/src/repos/components/changesets/ChangesetRow.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetRow.js index 0215abedd1..ef9de9bfe5 100644 --- a/scm-ui/src/repos/components/changesets/ChangesetRow.js +++ b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetRow.js @@ -1,17 +1,17 @@ //@flow import React from "react"; -import type {Changeset, Repository, Tag} from "@scm-manager/ui-types"; +import type { Changeset, Repository, Tag } from "@scm-manager/ui-types"; + import classNames from "classnames"; import {Interpolate, translate} from "react-i18next"; import ChangesetId from "./ChangesetId"; import injectSheet from "react-jss"; -import {DateFromNow} from "@scm-manager/ui-components"; +import {DateFromNow} from "../.."; import ChangesetAuthor from "./ChangesetAuthor"; import ChangesetTag from "./ChangesetTag"; -import {compose} from "redux"; + import {parseDescription} from "./changesets"; -import AvatarWrapper from "./AvatarWrapper"; -import AvatarImage from "./AvatarImage"; +import {AvatarWrapper, AvatarImage} from "../../avatar"; const styles = { pointer: { @@ -56,7 +56,7 @@ class ChangesetRow extends React.Component {

- +

@@ -95,7 +95,4 @@ class ChangesetRow extends React.Component { }; } -export default compose( - injectSheet(styles), - translate("repos") -)(ChangesetRow); +export default injectSheet(styles)(translate("repos")(ChangesetRow)); diff --git a/scm-ui/src/repos/components/changesets/ChangesetTag.js b/scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetTag.js similarity index 100% rename from scm-ui/src/repos/components/changesets/ChangesetTag.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/ChangesetTag.js diff --git a/scm-ui/src/repos/components/changesets/changesets.js b/scm-ui-components/packages/ui-components/src/repos/changesets/changesets.js similarity index 100% rename from scm-ui/src/repos/components/changesets/changesets.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/changesets.js diff --git a/scm-ui/src/repos/components/changesets/changesets.test.js b/scm-ui-components/packages/ui-components/src/repos/changesets/changesets.test.js similarity index 100% rename from scm-ui/src/repos/components/changesets/changesets.test.js rename to scm-ui-components/packages/ui-components/src/repos/changesets/changesets.test.js diff --git a/scm-ui-components/packages/ui-components/src/repos/changesets/index.js b/scm-ui-components/packages/ui-components/src/repos/changesets/index.js new file mode 100644 index 0000000000..9651978b35 --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/repos/changesets/index.js @@ -0,0 +1,9 @@ +// @flow +import * as changesets from "./changesets"; +export { changesets }; + +export { default as ChangesetAuthor } from "./ChangesetAuthor"; +export { default as ChangesetId } from "./ChangesetId"; +export { default as ChangesetList } from "./ChangesetList"; +export { default as ChangesetRow } from "./ChangesetRow"; +export { default as ChangesetTag } from "./ChangesetTag"; diff --git a/scm-ui-components/packages/ui-components/src/repos/index.js b/scm-ui-components/packages/ui-components/src/repos/index.js new file mode 100644 index 0000000000..05ae15d10d --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/repos/index.js @@ -0,0 +1,3 @@ +// @flow + +export * from "./changesets"; diff --git a/scm-ui/src/containers/ProfileInfo.js b/scm-ui/src/containers/ProfileInfo.js index 5d350d8619..0e38dc6d2a 100644 --- a/scm-ui/src/containers/ProfileInfo.js +++ b/scm-ui/src/containers/ProfileInfo.js @@ -1,8 +1,7 @@ // @flow import React from "react"; -import AvatarWrapper from "../repos/components/changesets/AvatarWrapper"; import type { Me } from "@scm-manager/ui-types"; -import { MailLink } from "@scm-manager/ui-components"; +import { MailLink, AvatarWrapper, AvatarImage } from "@scm-manager/ui-components"; import { compose } from "redux"; import { translate } from "react-i18next"; @@ -23,9 +22,7 @@ class ProfileInfo extends React.Component {

- { - // TODO: add avatar - } +

diff --git a/scm-ui/src/repos/components/changesets/ChangesetDetails.js b/scm-ui/src/repos/components/changesets/ChangesetDetails.js index 14f48362b8..d5cc28676a 100644 --- a/scm-ui/src/repos/components/changesets/ChangesetDetails.js +++ b/scm-ui/src/repos/components/changesets/ChangesetDetails.js @@ -3,14 +3,18 @@ import React from "react"; import type { Changeset, Repository } from "@scm-manager/ui-types"; import { Interpolate, translate } from "react-i18next"; import injectSheet from "react-jss"; -import ChangesetTag from "./ChangesetTag"; -import ChangesetAuthor from "./ChangesetAuthor"; -import { parseDescription } from "./changesets"; -import { DateFromNow } from "@scm-manager/ui-components"; -import AvatarWrapper from "./AvatarWrapper"; -import AvatarImage from "./AvatarImage"; + +import { + DateFromNow, + ChangesetId, + ChangesetTag, + ChangesetAuthor, + AvatarWrapper, + AvatarImage, + changesets +} from "@scm-manager/ui-components"; + import classNames from "classnames"; -import ChangesetId from "./ChangesetId"; import type { Tag } from "@scm-manager/ui-types"; import ScmDiff from "../../containers/ScmDiff"; @@ -31,12 +35,12 @@ class ChangesetDetails extends React.Component { render() { const { changeset, repository, classes } = this.props; - const description = parseDescription(changeset.description); + const description = changesets.parseDescription(changeset.description); const id = ( - + ); - const date = ; + const date = ; return (
@@ -45,12 +49,12 @@ class ChangesetDetails extends React.Component {

- +

- +

{ return ( {item} -
+
); })}

- +
); @@ -91,7 +95,7 @@ class ChangesetDetails extends React.Component { return (
{tags.map((tag: Tag) => { - return ; + return ; })}
); diff --git a/scm-ui/src/repos/containers/Changesets.js b/scm-ui/src/repos/containers/Changesets.js index 3d30e9f8be..95bf0459a6 100644 --- a/scm-ui/src/repos/containers/Changesets.js +++ b/scm-ui/src/repos/containers/Changesets.js @@ -12,8 +12,7 @@ import { } from "../modules/changesets"; import {connect} from "react-redux"; -import ChangesetList from "../components/changesets/ChangesetList"; -import {ErrorNotification, getPageFromMatch, LinkPaginator, Loading} from "@scm-manager/ui-components"; +import {ErrorNotification, getPageFromMatch, LinkPaginator, ChangesetList, Loading} from "@scm-manager/ui-components"; import {compose} from "redux"; type Props = { diff --git a/scm-ui/src/repos/sources/containers/HistoryView.js b/scm-ui/src/repos/sources/containers/HistoryView.js index a9e25bacc0..98400248d9 100644 --- a/scm-ui/src/repos/sources/containers/HistoryView.js +++ b/scm-ui/src/repos/sources/containers/HistoryView.js @@ -9,10 +9,10 @@ import type { import { ErrorNotification, Loading, - StatePaginator + StatePaginator, + ChangesetList } from "@scm-manager/ui-components"; import { getHistory } from "./history"; -import ChangesetList from "../../components/changesets/ChangesetList"; type Props = { file: File, From 822a5382ce8438a5a137ae69939d33ef3eac8a27 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 10 Dec 2018 14:55:42 +0100 Subject: [PATCH 2/4] update ProfileInfo and ChangesetDetails for new avatar components --- scm-ui/src/containers/ProfileInfo.js | 54 +++++++++---------- .../components/changesets/ChangesetDetails.js | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/scm-ui/src/containers/ProfileInfo.js b/scm-ui/src/containers/ProfileInfo.js index 0e38dc6d2a..833caa62fe 100644 --- a/scm-ui/src/containers/ProfileInfo.js +++ b/scm-ui/src/containers/ProfileInfo.js @@ -17,35 +17,35 @@ class ProfileInfo extends React.Component { render() { const { me, t } = this.props; return ( - <> +
-
-
-

- -

-
-
+
+

+ +

+
- - - - - - - - - - - - - - - -
{t("profile.username")}{me.name}
{t("profile.displayName")}{me.displayName}
{t("profile.mail")} - -
- +
+ + + + + + + + + + + + + + + +
{t("profile.username")}{me.name}
{t("profile.displayName")}{me.displayName}
{t("profile.mail")} + +
+
+
); } } diff --git a/scm-ui/src/repos/components/changesets/ChangesetDetails.js b/scm-ui/src/repos/components/changesets/ChangesetDetails.js index d5cc28676a..2f6c4b410e 100644 --- a/scm-ui/src/repos/components/changesets/ChangesetDetails.js +++ b/scm-ui/src/repos/components/changesets/ChangesetDetails.js @@ -49,7 +49,7 @@ class ChangesetDetails extends React.Component {

- +

From 50ba6af6ba515b89a7f73997e8bfd089cd9efe98 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 10 Dec 2018 15:06:50 +0100 Subject: [PATCH 3/4] use media-content instead of media-left again --- scm-ui/src/containers/ProfileInfo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm-ui/src/containers/ProfileInfo.js b/scm-ui/src/containers/ProfileInfo.js index 833caa62fe..7adc3065b7 100644 --- a/scm-ui/src/containers/ProfileInfo.js +++ b/scm-ui/src/containers/ProfileInfo.js @@ -25,7 +25,7 @@ class ProfileInfo extends React.Component {

-
+
From f4d4d58c93010423744015edb030e99bf9604913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maren=20S=C3=BCwer?= Date: Mon, 10 Dec 2018 14:07:45 +0000 Subject: [PATCH 4/4] Close branch feature/move-to-ui-components