1
+ import _ from 'lodash'
2
+ import moment from 'moment'
1
3
import React , { Component } from 'react'
2
4
import PropTypes from 'prop-types'
3
5
import cn from 'classnames'
@@ -6,7 +8,6 @@ import { PROJECT_ROLES } from '../../config/constants'
6
8
import PrimaryButton from '../Buttons/PrimaryButton'
7
9
import AlertModal from '../Modal/AlertModal'
8
10
import { updateProjectMemberRole } from '../../services/projects'
9
- import _ from 'lodash'
10
11
11
12
const theme = {
12
13
container : styles . modalContainer
@@ -58,7 +59,7 @@ class UserCard extends Component {
58
59
}
59
60
60
61
render ( ) {
61
- const { user, onRemoveClick, isEditable } = this . props
62
+ const { isInvite , user, onRemoveClick, isEditable } = this . props
62
63
const showRadioButtons = _ . includes ( _ . values ( PROJECT_ROLES ) , user . role )
63
64
return (
64
65
< div >
@@ -90,76 +91,90 @@ class UserCard extends Component {
90
91
) }
91
92
< div className = { styles . item } >
92
93
< div className = { cn ( styles . col5 ) } >
93
- { user . handle }
94
- </ div >
95
- < div className = { cn ( styles . col5 ) } >
96
- { showRadioButtons && ( < div className = { styles . tcRadioButton } >
97
- < input
98
- name = { `user-${ user . id } ` }
99
- type = 'radio'
100
- id = { `read-${ user . id } ` }
101
- checked = { user . role === PROJECT_ROLES . READ }
102
- onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . READ ) }
103
- />
104
- < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `read-${ user . id } ` } >
105
- < div >
106
- Read
107
- </ div >
108
- < input type = 'hidden' />
109
- </ label >
110
- </ div > ) }
111
- </ div >
112
- < div className = { cn ( styles . col5 ) } >
113
- { showRadioButtons && ( < div className = { styles . tcRadioButton } >
114
- < input
115
- name = { `user-${ user . id } ` }
116
- type = 'radio'
117
- id = { `write-${ user . id } ` }
118
- checked = { user . role === PROJECT_ROLES . WRITE }
119
- onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . WRITE ) }
120
- />
121
- < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `write-${ user . id } ` } >
122
- < div >
123
- Write
124
- </ div >
125
- < input type = 'hidden' />
126
- </ label >
127
- </ div > ) }
128
- </ div >
129
- < div className = { cn ( styles . col5 ) } >
130
- { showRadioButtons && ( < div className = { styles . tcRadioButton } >
131
- < input
132
- name = { `user-${ user . id } ` }
133
- type = 'radio'
134
- id = { `full-access-${ user . id } ` }
135
- checked = { user . role === PROJECT_ROLES . MANAGER }
136
- onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . MANAGER ) }
137
- />
138
- < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `full-access-${ user . id } ` } >
139
- < div >
140
- Full Access
141
- </ div >
142
- < input type = 'hidden' />
143
- </ label >
144
- </ div > ) }
145
- </ div >
146
- < div className = { cn ( styles . col5 ) } >
147
- { showRadioButtons && ( < div className = { styles . tcRadioButton } >
148
- < input
149
- name = { `user-${ user . id } ` }
150
- type = 'radio'
151
- id = { `copilot-${ user . id } ` }
152
- checked = { user . role === PROJECT_ROLES . COPILOT }
153
- onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . COPILOT ) }
154
- />
155
- < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `copilot-${ user . id } ` } >
156
- < div >
157
- Copilot
158
- </ div >
159
- < input type = 'hidden' />
160
- </ label >
161
- </ div > ) }
94
+ { isInvite ? user . email : user . handle }
162
95
</ div >
96
+ { ! isInvite && (
97
+ < >
98
+ < div className = { cn ( styles . col5 ) } >
99
+ { showRadioButtons && ( < div className = { styles . tcRadioButton } >
100
+ < input
101
+ name = { `user-${ user . id } ` }
102
+ type = 'radio'
103
+ id = { `read-${ user . id } ` }
104
+ checked = { user . role === PROJECT_ROLES . READ }
105
+ onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . READ ) }
106
+ />
107
+ < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `read-${ user . id } ` } >
108
+ < div >
109
+ Read
110
+ </ div >
111
+ < input type = 'hidden' />
112
+ </ label >
113
+ </ div > ) }
114
+ </ div >
115
+ < div className = { cn ( styles . col5 ) } >
116
+ { showRadioButtons && ( < div className = { styles . tcRadioButton } >
117
+ < input
118
+ name = { `user-${ user . id } ` }
119
+ type = 'radio'
120
+ id = { `write-${ user . id } ` }
121
+ checked = { user . role === PROJECT_ROLES . WRITE }
122
+ onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . WRITE ) }
123
+ />
124
+ < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `write-${ user . id } ` } >
125
+ < div >
126
+ Write
127
+ </ div >
128
+ < input type = 'hidden' />
129
+ </ label >
130
+ </ div > ) }
131
+ </ div >
132
+ < div className = { cn ( styles . col5 ) } >
133
+ { showRadioButtons && ( < div className = { styles . tcRadioButton } >
134
+ < input
135
+ name = { `user-${ user . id } ` }
136
+ type = 'radio'
137
+ id = { `full-access-${ user . id } ` }
138
+ checked = { user . role === PROJECT_ROLES . MANAGER }
139
+ onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . MANAGER ) }
140
+ />
141
+ < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `full-access-${ user . id } ` } >
142
+ < div >
143
+ Full Access
144
+ </ div >
145
+ < input type = 'hidden' />
146
+ </ label >
147
+ </ div > ) }
148
+ </ div >
149
+ < div className = { cn ( styles . col5 ) } >
150
+ { showRadioButtons && ( < div className = { styles . tcRadioButton } >
151
+ < input
152
+ name = { `user-${ user . id } ` }
153
+ type = 'radio'
154
+ id = { `copilot-${ user . id } ` }
155
+ checked = { user . role === PROJECT_ROLES . COPILOT }
156
+ onChange = { ( e ) => e . target . checked && this . updatePermission ( PROJECT_ROLES . COPILOT ) }
157
+ />
158
+ < label className = { cn ( { [ styles . isDisabled ] : ! isEditable } ) } htmlFor = { `copilot-${ user . id } ` } >
159
+ < div >
160
+ Copilot
161
+ </ div >
162
+ < input type = 'hidden' />
163
+ </ label >
164
+ </ div > ) }
165
+ </ div >
166
+ </ >
167
+ ) }
168
+ { isInvite && (
169
+ < >
170
+ < div className = { cn ( styles . col5 ) } />
171
+ < div className = { cn ( styles . col5 ) } >
172
+ Invited { moment ( user . createdAt ) . format ( 'MMM D, YY' ) }
173
+ </ div >
174
+ < div className = { cn ( styles . col5 ) } />
175
+ < div className = { cn ( styles . col5 ) } />
176
+ </ >
177
+ ) }
163
178
{ isEditable ? ( < div className = { cn ( styles . col5 ) } >
164
179
< PrimaryButton
165
180
text = { 'Remove' }
@@ -173,6 +188,7 @@ class UserCard extends Component {
173
188
}
174
189
175
190
UserCard . propTypes = {
191
+ isInvite : PropTypes . bool ,
176
192
user : PropTypes . object ,
177
193
updateProjectNember : PropTypes . func . isRequired ,
178
194
onRemoveClick : PropTypes . func . isRequired ,
0 commit comments