From e7db0f474f61fe8fe0be9d0bfb1006d8ddedda21 Mon Sep 17 00:00:00 2001 From: Jared Scheib Date: Mon, 6 Mar 2017 12:17:07 -0800 Subject: [PATCH] Show input box when editing --- ui/src/admin/actions/index.js | 13 ++-- ui/src/admin/components/UserRow.js | 6 +- ui/src/admin/components/UsersTable.js | 96 +++++++++++++++++---------- 3 files changed, 72 insertions(+), 43 deletions(-) diff --git a/ui/src/admin/actions/index.js b/ui/src/admin/actions/index.js index 5b0db3331..388d0448c 100644 --- a/ui/src/admin/actions/index.js +++ b/ui/src/admin/actions/index.js @@ -8,6 +8,13 @@ export const loadUsers = ({users}) => ({ }, }) +export const loadRoles = ({roles}) => ({ + type: 'LOAD_ROLES', + payload: { + roles, + }, +}) + export const killQuery = (queryID) => ({ type: 'KILL_QUERY', payload: { @@ -34,12 +41,6 @@ export const loadUsersAsync = (url) => async (dispatch) => { const {data} = await getUsers(url) dispatch(loadUsers(data)) } -export const loadRoles = ({roles}) => ({ - type: 'LOAD_ROLES', - payload: { - roles, - }, -}) export const loadRolesAsync = (url) => async (dispatch) => { const {data} = await getRoles(url) diff --git a/ui/src/admin/components/UserRow.js b/ui/src/admin/components/UserRow.js index 671cc259d..17aa74398 100644 --- a/ui/src/admin/components/UserRow.js +++ b/ui/src/admin/components/UserRow.js @@ -1,9 +1,9 @@ import React, {PropTypes} from 'react' import MultiSelectDropdown from 'shared/components/MultiSelectDropdown' -const UserRow = ({user: {name, roles, permissions}}) => ( +const UserRow = ({user: {name, roles, permissions}, isEditing}) => ( - {name} + {isEditing ? : {name}} { roles && roles.length ? @@ -31,6 +31,7 @@ const UserRow = ({user: {name, roles, permissions}}) => ( const { arrayOf, + bool, shape, string, } = PropTypes @@ -45,6 +46,7 @@ UserRow.propTypes = { name: string, })), }).isRequired, + isEditing: bool, } export default UserRow diff --git a/ui/src/admin/components/UsersTable.js b/ui/src/admin/components/UsersTable.js index d4592ca02..cb849e135 100644 --- a/ui/src/admin/components/UsersTable.js +++ b/ui/src/admin/components/UsersTable.js @@ -1,43 +1,69 @@ -import React, {PropTypes} from 'react' +import React, {Component, PropTypes} from 'react' import UserRow from 'src/admin/components/UserRow' import EmptyRow from 'src/admin/components/EmptyRow' -const UsersTable = ({users}) => ( -
-
-
- -
- +class UsersTable extends Component { + constructor(props) { + super(props) + + this.state = {users: this.props.users} + + this.addUser = ::this.addUser + } + + addUser() { + const newUser = { + name: '', + roles: [], + permissions: [], + isEditing: true, + } + + const newUsers = [...this.state.users] + newUsers.unshift(newUser) + + this.setState({users: newUsers}) + } + + render() { + return ( +
+
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + { + this.state.users.length ? + this.state.users.map((user) => + + ) : + } + +
UserRolesPermissions
- Create User -
-
- - - - - - - - - - { - users.length ? - users.map((user) => - - ) : - } - -
UserRolesPermissions
-
-
-) + ) + } +} const { arrayOf,