6
6
7
7
import moment from "moment" ;
8
8
import { useEffect , useState } from "react" ;
9
- import Property from "./Property" ;
10
9
import { Team , TeamMemberInfo } from "@gitpod/gitpod-protocol" ;
11
10
import { getGitpodService } from "../service/service" ;
11
+ import { Item , ItemField , ItemsList } from "../components/ItemsList" ;
12
+ import DropDown from "../components/DropDown" ;
12
13
13
14
export default function TeamDetail ( props : { team : Team } ) {
15
+ const { team } = props ;
14
16
const [ teamMembers , setTeamMembers ] = useState < TeamMemberInfo [ ] | undefined > ( undefined ) ;
15
17
16
18
useEffect ( ( ) => {
17
19
( async ( ) => {
18
- const members = await getGitpodService ( ) . server . adminGetTeamMembers ( props . team . id ) ;
20
+ const members = await getGitpodService ( ) . server . adminGetTeamMembers ( team . id ) ;
19
21
if ( members . length > 0 ) {
20
- console . log ( "members " , members . length ) ;
21
22
setTeamMembers ( members )
22
23
}
23
24
} ) ( ) ;
24
- } , [ props . team . id ] ) ;
25
+ } , [ team ] ) ;
25
26
26
27
return < >
27
28
< div className = "flex" >
28
29
< div className = "flex-1" >
29
- < div className = "flex" > < h3 > { props . team . name } </ h3 > < span className = "my-auto" > </ span > </ div >
30
- < p > { props . team . slug } </ p >
31
- </ div >
32
- </ div >
33
- < div className = "flex flex-col w-full" >
34
- < div className = "flex w-full mt-6" >
35
- < Property name = "Created" > { moment ( props . team . creationTime ) . format ( 'MMM D, YYYY' ) } </ Property >
36
- < Property name = "Marked Deleted" > { props . team . markedDeleted ? "Yes" : "No" } </ Property >
37
- < Property name = "Members" > { teamMembers ? teamMembers . length : "0" } </ Property >
30
+ < div className = "flex" > < h3 > { team . name } </ h3 > < span className = "my-auto" > { team . markedDeleted ? " Deleted" : "" } </ span > </ div >
31
+ < p > { teamMembers && teamMembers . length } member(s)</ p >
32
+ < p > Created { moment ( team . creationTime ) . format ( 'MMM D, YYYY' ) } </ p >
38
33
</ div >
39
34
</ div >
40
35
36
+ < ItemsList className = "mt-8" >
37
+ < Item header = { true } className = "grid grid-cols-3" >
38
+ < ItemField className = "my-auto" >
39
+ < span className = "pl-14" > Name</ span >
40
+ </ ItemField >
41
+ < ItemField className = "flex items-center space-x-1 my-auto" >
42
+ < span > Joined</ span >
43
+ < svg xmlns = "http://www.w3.org/2000/svg" fill = "none" className = "h-4 w-4" viewBox = "0 0 16 16" > < path fill = "#A8A29E" fill-rule = "evenodd" d = "M13.366 8.234a.8.8 0 010 1.132l-4.8 4.8a.8.8 0 01-1.132 0l-4.8-4.8a.8.8 0 111.132-1.132L7.2 11.67V2.4a.8.8 0 111.6 0v9.269l3.434-3.435a.8.8 0 011.132 0z" clip-rule = "evenodd" /> </ svg >
44
+ </ ItemField >
45
+ < ItemField className = "flex items-center my-auto" >
46
+ < span className = "flex-grow" > Role</ span >
47
+ </ ItemField >
48
+ </ Item >
49
+ { ! teamMembers || teamMembers . length === 0
50
+ ? < p className = "pt-16 text-center" > No members found</ p >
51
+ : teamMembers && teamMembers . map ( m => < Item className = "grid grid-cols-3" key = { m . userId } >
52
+ < ItemField className = "flex items-center my-auto" >
53
+ < div className = "w-14" > { m . avatarUrl && < img className = "rounded-full w-8 h-8" src = { m . avatarUrl || '' } alt = { m . fullName } /> } </ div >
54
+ < div >
55
+ < div className = "text-base text-gray-900 dark:text-gray-50 font-medium" > { m . fullName } </ div >
56
+ < p > { m . primaryEmail } </ p >
57
+ </ div >
58
+ </ ItemField >
59
+ < ItemField className = "my-auto" >
60
+ < span className = "text-gray-400" > { moment ( m . memberSince ) . fromNow ( ) } </ span >
61
+ </ ItemField >
62
+ < ItemField className = "flex items-center my-auto" >
63
+ < span className = "text-gray-400 capitalize" > {
64
+ < DropDown contextMenuWidth = "w-32" activeEntry = { m . role } entries = { [ {
65
+ title : 'owner' ,
66
+ onClick : ( ) => { }
67
+ } , {
68
+ title : 'member' ,
69
+ onClick : ( ) => { }
70
+ } ] } /> } </ span >
71
+ < span className = "flex-grow" />
72
+ </ ItemField >
73
+ </ Item > ) }
74
+ </ ItemsList >
41
75
</ >
42
76
}
0 commit comments