diff --git a/website/client/components/challenges/challengeDetail.vue b/website/client/components/challenges/challengeDetail.vue
index ea01f8ffa7..392f0c3f16 100644
--- a/website/client/components/challenges/challengeDetail.vue
+++ b/website/client/components/challenges/challengeDetail.vue
@@ -1,6 +1,7 @@
.row
challenge-modal(:cloning='cloning' v-on:updatedChallenge='updatedChallenge')
+ leave-challenge-modal(:challengeId='challenge._id')
close-challenge-modal(:members='members', :challengeId='challenge._id')
challenge-member-progress-modal(:memberId='progressMemberId', :challengeId='challenge._id')
@@ -33,7 +34,8 @@
span.view-progress
strong {{ $t('viewProgressOf') }}
b-dropdown.create-dropdown(text="Select a Participant")
- b-dropdown-item(v-for="member in members", :key="member._id", @click="openMemberProgressModal(member._id)")
+ input.form-control(type='text', v-model='searchTerm')
+ b-dropdown-item(v-for="member in memberResults", :key="member._id", @click="openMemberProgressModal(member._id)")
| {{ member.profile.name }}
span(v-if='isLeader || isAdmin')
b-dropdown.create-dropdown(:text="$t('addTaskToChallenge')", :variant="'success'")
@@ -189,6 +191,8 @@ import TaskModal from '../tasks/taskModal';
import markdownDirective from 'client/directives/markdown';
import challengeModal from './challengeModal';
import challengeMemberProgressModal from './challengeMemberProgressModal';
+import challengeMemberSearchMixin from 'client/mixins/challengeMemberSearch';
+import leaveChallengeModal from './leaveChallengeModal';
import taskDefaults from 'common/script/libs/taskDefaults';
@@ -198,11 +202,13 @@ import calendarIcon from 'assets/svg/calendar.svg';
export default {
props: ['challengeId'],
+ mixins: [challengeMemberSearchMixin],
directives: {
markdown: markdownDirective,
},
components: {
closeChallengeModal,
+ leaveChallengeModal,
challengeModal,
challengeMemberProgressModal,
TaskColumn: Column,
@@ -231,6 +237,8 @@ export default {
workingTask: {},
taskFormPurpose: 'create',
progressMemberId: '',
+ searchTerm: '',
+ memberResults: [],
};
},
computed: {
@@ -365,19 +373,7 @@ export default {
await this.$store.dispatch('tasks:fetchUserTasks', {forceLoad: true});
},
async leaveChallenge () {
- let keepChallenge = confirm('Do you want to keep challenge tasks?');
- let keep = 'keep-all';
- if (!keepChallenge) keep = 'remove-all';
-
- let index = findIndex(this.user.challenges, (challengeId) => {
- return challengeId === this.searchId;
- });
- this.user.challenges.splice(index, 1);
- await this.$store.dispatch('challenges:leaveChallenge', {
- challengeId: this.searchId,
- keep,
- });
- await this.$store.dispatch('tasks:fetchUserTasks', {forceLoad: true});
+ this.$root.$emit('bv::show::modal', 'leave-challenge-modal');
},
closeChallenge () {
this.$root.$emit('bv::show::modal', 'close-challenge-modal');
diff --git a/website/client/components/challenges/closeChallengeModal.vue b/website/client/components/challenges/closeChallengeModal.vue
index 6d1a46a046..ea2d93e756 100644
--- a/website/client/components/challenges/closeChallengeModal.vue
+++ b/website/client/components/challenges/closeChallengeModal.vue
@@ -74,10 +74,11 @@ div
diff --git a/website/client/components/groups/groupFormModal.vue b/website/client/components/groups/groupFormModal.vue
index 54e9c103cb..1d0111eacd 100644
--- a/website/client/components/groups/groupFormModal.vue
+++ b/website/client/components/groups/groupFormModal.vue
@@ -11,7 +11,7 @@
select.form-control(v-model="workingGroup.newLeader")
option(v-for='potentialLeader in potentialLeaders', :value="potentialLeader._id") {{ potentialLeader.name }}
- .form-group(v-if='!this.workingGroup.id')
+ .form-group
label
strong(v-once) {{$t('privacySettings')}} *
br
@@ -35,7 +35,7 @@
// @TODO discuss the impact of this with moderators before implementing
br
- label.custom-control.custom-checkbox(v-if='!isParty')
+ label.custom-control.custom-checkbox(v-if='!isParty && !this.workingGroup.id')
input.custom-control-input(type="checkbox", v-model="workingGroup.privateGuild")
span.custom-control-indicator
span.custom-control-description(v-once) {{ $t('privateGuild') }}
@@ -345,6 +345,9 @@ export default {
if (editingGroup.summary) this.workingGroup.summary = editingGroup.summary;
if (editingGroup.description) this.workingGroup.description = editingGroup.description;
if (editingGroup._id) this.workingGroup.id = editingGroup._id;
+
+ this.workingGroup.onlyLeaderCreatesChallenges = editingGroup.leaderOnly.challenges;
+
if (editingGroup.leader._id) {
this.workingGroup.newLeader = editingGroup.leader._id;
this.workingGroup.currentLeaderId = editingGroup.leader._id;
@@ -410,11 +413,9 @@ export default {
this.workingGroup.privacy = 'public';
}
- if (!this.workingGroup.onlyLeaderCreatesChallenges) {
- this.workingGroup.leaderOnly = {
- challenges: true,
- };
- }
+ this.workingGroup.leaderOnly = {
+ challenges: this.workingGroup.onlyLeaderCreatesChallenges,
+ };
let categoryKeys = this.workingGroup.categories;
let serverCategories = [];
diff --git a/website/client/components/tasks/column.vue b/website/client/components/tasks/column.vue
index f56054a6b7..61e67aee90 100644
--- a/website/client/components/tasks/column.vue
+++ b/website/client/components/tasks/column.vue
@@ -64,7 +64,6 @@
@click.prevent.stop="togglePinned(ctx.item)"
)
span.svg-icon.inline.icon-12.color(v-html="icons.pin")
-