Wire up user organizations as Tags in AllUsersTable
parent
ca59e8fcf4
commit
81eea19400
|
@ -38,10 +38,16 @@ class AllUsersTable extends Component {
|
|||
updateAuthConfigAsync(links.config.auth, authConfig, updatedAuthConfig)
|
||||
}
|
||||
|
||||
handleAddUserToOrganization = user => newOrganization => {
|
||||
console.log('handleAddUserToOrganization', user.name, newOrganization.id)
|
||||
// const newOrganizationRole = newOrganization + newOrganizationDefaultRole -- need to get this fresh from server or have server determine it, which requires a change to ValidUpdate
|
||||
// this.props.onUpdateUserRole(user, newOrganizationRole)
|
||||
handleAddToOrganization = user => organization => {
|
||||
console.log('handleAddToOrganization', user.name, organization)
|
||||
// const organizationRole = organization + organizationDefaultRole -- need to get this fresh from server or have server determine it, which requires a change to ValidUpdate
|
||||
// this.props.onUpdateUserRole({...user, roles: [...user.roles, organizationRole]})
|
||||
}
|
||||
|
||||
handleRemoveFromOrganization = user => organization => {
|
||||
console.log('handleRemoveFromOrganization', user.name, organization)
|
||||
// const roles = newOrganizationRole.filter(o => o.id === organization.id)
|
||||
// this.props.onUpdateUserRole({...user, roles})
|
||||
}
|
||||
|
||||
handleChangeSuperAdmin = user => newStatus => {
|
||||
|
@ -117,7 +123,10 @@ class AllUsersTable extends Component {
|
|||
user={user}
|
||||
key={uuid.v4()}
|
||||
organizations={organizations}
|
||||
onAddUserToOrganization={this.handleAddUserToOrganization}
|
||||
onAddToOrganization={this.handleAddToOrganization}
|
||||
onRemoveFromOrganization={
|
||||
this.handleRemoveFromOrganization
|
||||
}
|
||||
onChangeSuperAdmin={this.handleChangeSuperAdmin}
|
||||
onDelete={this.handleDeleteUser}
|
||||
meID={meID}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React, {PropTypes} from 'react'
|
||||
|
||||
import Tags from 'shared/components/Tags'
|
||||
import Dropdown from 'shared/components/Dropdown'
|
||||
import SlideToggle from 'shared/components/SlideToggle'
|
||||
import DeleteConfirmTableCell from 'shared/components/DeleteConfirmTableCell'
|
||||
|
@ -16,7 +17,8 @@ const {
|
|||
const AllUsersTableRow = ({
|
||||
organizations,
|
||||
user,
|
||||
onAddUserToOrganization,
|
||||
onAddToOrganization,
|
||||
onRemoveFromOrganization,
|
||||
onChangeSuperAdmin,
|
||||
onDelete,
|
||||
meID,
|
||||
|
@ -46,7 +48,10 @@ const AllUsersTableRow = ({
|
|||
</strong>}
|
||||
</td>
|
||||
<td style={{width: colOrganizations}}>
|
||||
{userOrganizations.map(o => o.name).join(', ')}
|
||||
<Tags
|
||||
tags={userOrganizations}
|
||||
onDeleteTag={onRemoveFromOrganization(user)}
|
||||
/>
|
||||
</td>
|
||||
<td style={{width: colProvider}}>
|
||||
{user.provider}
|
||||
|
@ -67,7 +72,7 @@ const AllUsersTableRow = ({
|
|||
<Dropdown
|
||||
items={dropdownOrganizationsItems}
|
||||
selected={'Add to Organization'}
|
||||
onChoose={onAddUserToOrganization(user)}
|
||||
onChoose={onAddToOrganization(user)}
|
||||
buttonColor="btn-primary"
|
||||
buttonSize="btn-xs"
|
||||
className="dropdown-stretch"
|
||||
|
@ -93,7 +98,8 @@ AllUsersTableRow.propTypes = {
|
|||
name: string.isRequired,
|
||||
id: string.isRequired,
|
||||
}),
|
||||
onAddUserToOrganization: func.isRequired,
|
||||
onAddToOrganization: func.isRequired,
|
||||
onRemoveFromOrganization: func.isRequired,
|
||||
onChangeSuperAdmin: func.isRequired,
|
||||
onDelete: func.isRequired,
|
||||
meID: string.isRequired,
|
||||
|
|
|
@ -1,29 +1,45 @@
|
|||
import React, {PropTypes} from 'react'
|
||||
import React, {Component, PropTypes} from 'react'
|
||||
|
||||
const Tags = ({tags, onDeleteTag}) =>
|
||||
<div className="input-tag-list">
|
||||
{tags.map(item => {
|
||||
return <Tag key={item} item={item} onDelete={onDeleteTag} />
|
||||
return (
|
||||
<Tag
|
||||
key={item.text || item.name || item}
|
||||
item={item}
|
||||
onDelete={onDeleteTag}
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
|
||||
const Tag = ({item, onDelete}) =>
|
||||
<span key={item} className="input-tag-item">
|
||||
<span>
|
||||
{item}
|
||||
</span>
|
||||
<span className="icon remove" onClick={onDelete(item)} />
|
||||
</span>
|
||||
class Tag extends Component {
|
||||
handleClickDelete = item => () => {
|
||||
this.props.onDelete(item)
|
||||
}
|
||||
|
||||
const {arrayOf, func, string} = PropTypes
|
||||
render() {
|
||||
const {item} = this.props
|
||||
return (
|
||||
<span key={item} className="input-tag-item">
|
||||
<span>
|
||||
{item.text || item.name || item}
|
||||
</span>
|
||||
<span className="icon remove" onClick={this.handleClickDelete(item)} />
|
||||
</span>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const {arrayOf, func, oneOfType, shape, string} = PropTypes
|
||||
|
||||
Tags.propTypes = {
|
||||
tags: arrayOf(string),
|
||||
tags: arrayOf(oneOfType([shape(), string])),
|
||||
onDeleteTag: func,
|
||||
}
|
||||
|
||||
Tag.propTypes = {
|
||||
item: string,
|
||||
item: oneOfType([shape(), string]),
|
||||
onDelete: func,
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue