Drag challenge tasks (#12204)

* Allow challenge tasks to be draggable by leaders and admins

* Drag challenge tasks, ensure they're ordered

* Ensure group tasks are ordered properly, make draggable

* Add tests, fix broken tests

* Resolve merge conflict

* Remove console.log()

* Address code review comments

* Code review fixes

* Fix lint

* Fix importing

* taskManager

* Lint

* Fix collapseChecklist test

Co-authored-by: Sabe Jones <sabrecat@gmail.com>
This commit is contained in:
Alec Brickner
2021-04-30 14:23:27 -07:00
committed by GitHub
parent a53355872b
commit f33720e9fd
17 changed files with 346 additions and 262 deletions
@@ -133,6 +133,7 @@
:type="column"
:task-list-override="tasksByType[column]"
:challenge="challenge"
:draggable-override="isLeader || isAdmin"
@editTask="editTask"
@taskDestroyed="taskDestroyed"
/>
@@ -512,7 +513,7 @@ export default {
this.creatingTask = null;
},
taskCreated (task) {
this.tasksByType[task.type].push(task);
this.tasksByType[task.type].unshift(task);
},
taskEdited (task) {
const index = findIndex(this.tasksByType[task.type], taskItem => taskItem._id === task._id);
@@ -77,6 +77,7 @@
:task-list-override="tasksByType[column]"
:group="group"
:search-text="searchText"
:draggable-override="canCreateTasks"
@editTask="editTask"
@loadGroupCompletedTodos="loadGroupCompletedTodos"
@taskDestroyed="taskDestroyed"
@@ -295,7 +296,7 @@ export default {
},
taskCreated (task) {
task.group.id = this.group._id;
this.tasksByType[task.type].push(task);
this.tasksByType[task.type].unshift(task);
},
taskEdited (task) {
const index = findIndex(this.tasksByType[task.type], taskItem => taskItem._id === task._id);
+10 -1
View File
@@ -86,7 +86,8 @@
v-if="taskList.length > 0"
ref="tasksList"
class="sortable-tasks"
:options="{disabled: activeFilter.label === 'scheduled' || !isUser, scrollSensitivity: 64}"
:options="{disabled: activeFilter.label === 'scheduled' || !canBeDragged(),
scrollSensitivity: 64}"
:delay-on-touch-only="true"
:delay="100"
@update="taskSorted"
@@ -391,6 +392,10 @@ export default {
type: Boolean,
default: false,
},
draggableOverride: {
type: Boolean,
default: false,
},
searchText: {},
selectedTags: {},
taskListOverride: {},
@@ -767,6 +772,10 @@ export default {
taskDestroyed (task) {
this.$emit('taskDestroyed', task);
},
canBeDragged () {
return this.isUser
|| this.draggableOverride;
},
},
};
</script>