2019-10-19 16:38:07 +02:00
|
|
|
import React from 'react';
|
|
|
|
|
import { translate } from 'react-i18next';
|
|
|
|
|
import { Me } from '@scm-manager/ui-types';
|
2019-02-18 08:47:29 +01:00
|
|
|
import {
|
|
|
|
|
MailLink,
|
|
|
|
|
AvatarWrapper,
|
2019-10-19 16:38:07 +02:00
|
|
|
AvatarImage,
|
|
|
|
|
} from '@scm-manager/ui-components';
|
2019-01-17 15:40:11 +01:00
|
|
|
|
|
|
|
|
type Props = {
|
2019-10-19 16:38:07 +02:00
|
|
|
me: Me;
|
2019-01-17 15:40:11 +01:00
|
|
|
|
|
|
|
|
// Context props
|
2019-10-19 16:38:07 +02:00
|
|
|
t: (p: string) => string;
|
2019-01-17 15:40:11 +01:00
|
|
|
};
|
|
|
|
|
|
2019-02-19 15:05:55 +01:00
|
|
|
class ProfileInfo extends React.Component<Props> {
|
2019-01-17 15:40:11 +01:00
|
|
|
render() {
|
|
|
|
|
const { me, t } = this.props;
|
|
|
|
|
return (
|
|
|
|
|
<div className="media">
|
|
|
|
|
<AvatarWrapper>
|
|
|
|
|
<figure className="media-left">
|
|
|
|
|
<p className="image is-64x64">
|
2019-02-18 08:47:29 +01:00
|
|
|
<AvatarImage person={me} />
|
2019-01-17 15:40:11 +01:00
|
|
|
</p>
|
|
|
|
|
</figure>
|
|
|
|
|
</AvatarWrapper>
|
|
|
|
|
<div className="media-content">
|
2019-02-19 15:05:55 +01:00
|
|
|
<table className="table content">
|
2019-01-17 15:40:11 +01:00
|
|
|
<tbody>
|
2019-02-18 08:47:29 +01:00
|
|
|
<tr>
|
2019-10-19 16:38:07 +02:00
|
|
|
<th>{t('profile.username')}</th>
|
2019-02-18 08:47:29 +01:00
|
|
|
<td>{me.name}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
2019-10-19 16:38:07 +02:00
|
|
|
<th>{t('profile.displayName')}</th>
|
2019-02-18 08:47:29 +01:00
|
|
|
<td>{me.displayName}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
2019-10-19 16:38:07 +02:00
|
|
|
<th>{t('profile.mail')}</th>
|
2019-02-18 08:47:29 +01:00
|
|
|
<td>
|
|
|
|
|
<MailLink address={me.mail} />
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
2019-02-19 15:05:55 +01:00
|
|
|
{this.renderGroups()}
|
2019-01-17 15:40:11 +01:00
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
2019-02-19 15:05:55 +01:00
|
|
|
|
|
|
|
|
renderGroups() {
|
2019-10-09 16:17:02 +02:00
|
|
|
const { me, t } = this.props;
|
2019-02-19 15:05:55 +01:00
|
|
|
|
|
|
|
|
let groups = null;
|
|
|
|
|
if (me.groups.length > 0) {
|
|
|
|
|
groups = (
|
|
|
|
|
<tr>
|
2019-10-19 16:38:07 +02:00
|
|
|
<th>{t('profile.groups')}</th>
|
2019-10-09 16:17:02 +02:00
|
|
|
<td className="is-paddingless">
|
2019-02-19 15:05:55 +01:00
|
|
|
<ul>
|
2019-02-20 10:12:54 +01:00
|
|
|
{me.groups.map(group => {
|
2019-02-19 15:05:55 +01:00
|
|
|
return <li>{group}</li>;
|
|
|
|
|
})}
|
|
|
|
|
</ul>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
return groups;
|
|
|
|
|
}
|
2019-01-17 15:40:11 +01:00
|
|
|
}
|
|
|
|
|
|
2019-10-19 16:38:07 +02:00
|
|
|
export default translate('commons')(ProfileInfo);
|