1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { StyleRulesCallback, WithStyles, withStyles, Card, CardContent, TextField, Button, Typography, Grid, Table, TableHead, TableRow, TableCell, TableBody, Tooltip, IconButton } from '@material-ui/core';
7 import { ArvadosTheme } from '~/common/custom-theme';
8 import { User } from "~/models/user";
10 type CssRules = 'root' | 'gridItem' | 'title';
12 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
22 marginBottom: theme.spacing.unit * 3,
23 color: theme.palette.grey["600"]
27 export interface MyAccountPanelRootActionProps {}
29 export interface MyAccountPanelRootDataProps {
33 type MyAccountPanelRootProps = MyAccountPanelRootActionProps & MyAccountPanelRootDataProps & WithStyles<CssRules>;
35 export const MyAccountPanelRoot = withStyles(styles)(
36 ({ classes, user }: MyAccountPanelRootProps) => {
38 return <Card className={classes.root}>
40 <Typography variant="title" className={classes.title}>User profile</Typography>
41 <Grid container direction="row" spacing={24}>
43 <Grid item className={classes.gridItem}>
52 <Grid item className={classes.gridItem}>
57 value={user!.firstName}
61 <Grid item className={classes.gridItem}>
66 value={user!.identityUrl}
70 <Grid item className={classes.gridItem}>
74 value={user!.prefs.profile!.organization}
78 <Grid item className={classes.gridItem}>
82 value={user!.prefs.profile!.website_url}
86 <Grid item className={classes.gridItem}>
90 value={user!.prefs.profile!.role}
96 <Grid item className={classes.gridItem} />
97 <Grid item className={classes.gridItem}>
102 value={user!.lastName}
106 <Grid item className={classes.gridItem} />
107 <Grid item className={classes.gridItem}>
109 label="E-mail at Organization"
110 name="organizationEmail"
111 value={user!.prefs.profile!.organization_email}