diff --git a/scm-ui/src/containers/ProfileInfo.js b/scm-ui/src/containers/ProfileInfo.js index 49c79f1fe8..ab8eacae0e 100644 --- a/scm-ui/src/containers/ProfileInfo.js +++ b/scm-ui/src/containers/ProfileInfo.js @@ -1,19 +1,30 @@ // @flow import React from "react"; import type { Me } from "@scm-manager/ui-types"; -import { MailLink, AvatarWrapper, AvatarImage } from "@scm-manager/ui-components"; +import { + MailLink, + AvatarWrapper, + AvatarImage +} from "@scm-manager/ui-components"; import { compose } from "redux"; import { translate } from "react-i18next"; +import injectSheet from "react-jss"; type Props = { me: Me, // Context props + classes: any, t: string => string }; -type State = {}; -class ProfileInfo extends React.Component { +const styles = { + spacing: { + padding: "0 !important" + } +}; + +class ProfileInfo extends React.Component { render() { const { me, t } = this.props; return ( @@ -21,33 +32,64 @@ class ProfileInfo extends React.Component {

- +

- +
- - - - - - - - - - - - + + + + + + + + + + + + + {this.renderGroups()}
{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")} + + +
); } + + renderGroups() { + const { me, t, classes } = this.props; + + let groups = null; + if (me.groups.length > 0) { + groups = ( + + {t("profile.groups")} + +
    + {me.groups.map(group => { + return
  • {group}
  • ; + })} +
+ + + ); + } + return groups; + } } -export default compose(translate("commons"))(ProfileInfo); +export default compose( + injectSheet(styles), + translate("commons") +)(ProfileInfo); diff --git a/scm-ui/src/groups/components/table/Details.js b/scm-ui/src/groups/components/table/Details.js index eb4c3fa0d5..4391310d01 100644 --- a/scm-ui/src/groups/components/table/Details.js +++ b/scm-ui/src/groups/components/table/Details.js @@ -1,69 +1,81 @@ -//@flow -import React from "react"; -import type { Group } from "@scm-manager/ui-types"; -import { translate } from "react-i18next"; -import GroupMember from "./GroupMember"; -import { DateFromNow } from "@scm-manager/ui-components"; - -type Props = { - group: Group, - t: string => string -}; - -class Details extends React.Component { - render() { - const { group, t } = this.props; - return ( - - - - - - - - - - - - - - - - - - - - - - - {this.renderMembers()} - -
{t("group.name")}{group.name}
{t("group.description")}{group.description}
{t("group.type")}{group.type}
{t("group.creationDate")} - -
{t("group.lastModified")} - -
- ); - } - - renderMembers() { - if (this.props.group.members.length > 0) { - return ( - - - {this.props.t("group.members")} -
    - {this.props.group._embedded.members.map((member, index) => { - return ; - })} -
- - - ); - } else { - return; - } - } -} - -export default translate("groups")(Details); +//@flow +import React from "react"; +import type { Group } from "@scm-manager/ui-types"; +import GroupMember from "./GroupMember"; +import { DateFromNow } from "@scm-manager/ui-components"; +import { translate } from "react-i18next"; +import injectSheet from "react-jss"; + +type Props = { + group: Group, + + // Context props + classes: any, + t: string => string +}; + +const styles = { + spacing: { + padding: "0 !important" + } +}; + +class Details extends React.Component { + render() { + const { group, t } = this.props; + return ( + + + + + + + + + + + + + + + + + + + + + + + {this.renderMembers()} + +
{t("group.name")}{group.name}
{t("group.description")}{group.description}
{t("group.type")}{group.type}
{t("group.creationDate")} + +
{t("group.lastModified")} + +
+ ); + } + + renderMembers() { + const { group, t, classes } = this.props; + + let member = null; + if (group.members.length > 0) { + member = ( + + {t("group.members")} + +
    + {group._embedded.members.map((member, index) => { + return ; + })} +
+ + + ); + } + return member; + } +} + +export default injectSheet(styles)(translate("groups")(Details));