diff --git a/src/components/ChallengeEditor/AssignedMember-Field/AssignedMember-Field.module.scss b/src/components/ChallengeEditor/AssignedMember-Field/AssignedMember-Field.module.scss index 4f22fc27..33eea080 100644 --- a/src/components/ChallengeEditor/AssignedMember-Field/AssignedMember-Field.module.scss +++ b/src/components/ChallengeEditor/AssignedMember-Field/AssignedMember-Field.module.scss @@ -45,5 +45,10 @@ .readOnlyValue { margin-bottom: 0.5rem; // the same like `label` to be aligned } + + .assignSelfField { + margin-left: 20px; + padding-top: 6px; + } } diff --git a/src/components/ChallengeEditor/AssignedMember-Field/index.js b/src/components/ChallengeEditor/AssignedMember-Field/index.js index 4731518d..cf52873f 100644 --- a/src/components/ChallengeEditor/AssignedMember-Field/index.js +++ b/src/components/ChallengeEditor/AssignedMember-Field/index.js @@ -7,12 +7,13 @@ import cn from 'classnames' import styles from './AssignedMember-Field.module.scss' import SelectUserAutocomplete from '../../SelectUserAutocomplete' -const AssignedMemberField = ({ challenge, onChange, assignedMemberDetails, readOnly }) => { +const AssignedMemberField = ({ challenge, onAssignSelf, onChange, assignedMemberDetails, readOnly }) => { const value = assignedMemberDetails ? { // if we know assigned member details, then show user `handle`, otherwise fallback to `userId` label: assignedMemberDetails.handle, value: assignedMemberDetails.userId + '' } : null + return (
@@ -28,6 +29,15 @@ const AssignedMemberField = ({ challenge, onChange, assignedMemberDetails, readO /> )}
+ { + !readOnly && +
+ { + e.preventDefault() + onAssignSelf() + }}>Assign to me +
+ }
) } @@ -41,7 +51,8 @@ AssignedMemberField.propTypes = { challenge: PropTypes.shape().isRequired, onChange: PropTypes.func, assignedMemberDetails: PropTypes.shape(), - readOnly: PropTypes.bool + readOnly: PropTypes.bool, + onAssignSelf: PropTypes.func } export default AssignedMemberField diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 935b65ad..82281cc0 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -90,6 +90,7 @@ class ChallengeEditor extends Component { this.onUpdateOthers = this.onUpdateOthers.bind(this) this.onUpdateCheckbox = this.onUpdateCheckbox.bind(this) this.onUpdateAssignedMember = this.onUpdateAssignedMember.bind(this) + this.onAssignSelf = this.onAssignSelf.bind(this) this.addFileType = this.addFileType.bind(this) this.removeFileType = this.removeFileType.bind(this) this.updateFileTypesMetadata = this.updateFileTypesMetadata.bind(this) @@ -335,6 +336,22 @@ class ChallengeEditor extends Component { }) } + /** + * Update Assigned Member to Current User + */ + onAssignSelf () { + const { loggedInUser } = this.props + + const assignedMemberDetails = { + handle: loggedInUser.handle, + userId: loggedInUser.userId + } + + this.setState({ + assignedMemberDetails + }) + } + /** * Update Single Select * @param option The select option @@ -1326,6 +1343,7 @@ class ChallengeEditor extends Component { challenge={challenge} onChange={this.onUpdateAssignedMember} assignedMemberDetails={assignedMemberDetails} + onAssignSelf={this.onAssignSelf} /> )} @@ -1469,7 +1487,8 @@ ChallengeEditor.propTypes = { updateChallengeDetails: PropTypes.func.isRequired, createChallenge: PropTypes.func, replaceResourceInRole: PropTypes.func, - partiallyUpdateChallengeDetails: PropTypes.func.isRequired + partiallyUpdateChallengeDetails: PropTypes.func.isRequired, + loggedInUser: PropTypes.shape().isRequired } export default withRouter(ChallengeEditor) diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index ab0c4796..a7bba88a 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -229,7 +229,8 @@ class ChallengeEditor extends Component { updateChallengeDetails, partiallyUpdateChallengeDetails, createChallenge, - replaceResourceInRole + replaceResourceInRole, + loggedInUser // members } = this.props const { @@ -335,6 +336,7 @@ class ChallengeEditor extends Component { updateChallengeDetails={updateChallengeDetails} replaceResourceInRole={replaceResourceInRole} partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails} + loggedInUser={loggedInUser} /> )) } />