diff --git a/ui/src/admin/components/DeleteRow.js b/ui/src/admin/components/DeleteRow.js new file mode 100644 index 0000000000..8894fefbd8 --- /dev/null +++ b/ui/src/admin/components/DeleteRow.js @@ -0,0 +1,87 @@ +import React, {PropTypes, Component} from 'react' + +const DeleteButton = ({onConfirm}) => ( + +) + +const ConfirmButtons = ({onDelete, item, onCancel}) => ( +
+ + +
+) + +class DeleteRow extends Component { + constructor(props) { + super(props) + this.state = { + isConfirmed: false, + } + this.handleConfirm = ::this.handleConfirm + this.handleCancel = ::this.handleCancel + } + + handleConfirm() { + this.setState({isConfirmed: true}) + } + + handleCancel() { + this.setState({isConfirmed: false}) + } + + render() { + const {onDelete, item} = this.props + const {isConfirmed} = this.state + + if (isConfirmed) { + return ( + + ) + } + + return ( + + ) + } +} + +const { + func, + shape, +} = PropTypes + +DeleteButton.propTypes = { + onConfirm: func.isRequired, +} + +ConfirmButtons.propTypes = { + onDelete: func.isRequired, + item: shape({}).isRequired, + onCancel: func.isRequired, +} + +DeleteRow.propTypes = { + item: shape({}), + onDelete: func.isRequired, +} + +export default DeleteRow diff --git a/ui/src/admin/components/RoleRow.js b/ui/src/admin/components/RoleRow.js index cd6cbff70a..2018018473 100644 --- a/ui/src/admin/components/RoleRow.js +++ b/ui/src/admin/components/RoleRow.js @@ -2,6 +2,7 @@ import React, {PropTypes} from 'react' import _ from 'lodash' import MultiSelectDropdown from 'shared/components/MultiSelectDropdown' +import DeleteRow from 'src/admin/components/DeleteRow' const PERMISSIONS = [ "NoPermissions", @@ -51,12 +52,7 @@ const RoleRow = ({role: {name, permissions, users}, role, onDelete}) => ( } - + ) diff --git a/ui/src/admin/components/UserRow.js b/ui/src/admin/components/UserRow.js index 915b6060bc..a281bc71a6 100644 --- a/ui/src/admin/components/UserRow.js +++ b/ui/src/admin/components/UserRow.js @@ -1,5 +1,6 @@ import React, {PropTypes} from 'react' import MultiSelectDropdown from 'shared/components/MultiSelectDropdown' +import DeleteRow from 'src/admin/components/DeleteRow' const UserRow = ({user: {name, roles, permissions}, user, onDelete}) => ( @@ -27,12 +28,7 @@ const UserRow = ({user: {name, roles, permissions}, user, onDelete}) => ( } - + )