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 &&
+
+ }
)
}
@@ -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}
/>
))
} />