From 00ffcb1cf2dd0c3a3198cb42a9dc0e50282681ec Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 9 Apr 2026 09:56:53 +0200 Subject: [PATCH] feat : add collaborators multi-select to TaskModal Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/components/task/TaskModal.vue | 46 ++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/frontend/components/task/TaskModal.vue b/frontend/components/task/TaskModal.vue index 88c6515..e52ec5f 100644 --- a/frontend/components/task/TaskModal.vue +++ b/frontend/components/task/TaskModal.vue @@ -170,6 +170,30 @@ + +
+

Collaborateurs

+
+ +
+
+
props.users.map(u => ({ label: u.username, value: u.id })) ) +const collaboratorOptions = computed(() => + props.users + .filter(u => u.id !== form.assigneeId) + .map(u => ({ label: u.username, value: u.id })) +) + +watch(() => form.assigneeId, (newAssigneeId) => { + if (newAssigneeId) { + form.collaboratorIds = form.collaboratorIds.filter(id => id !== newAssigneeId) + } +}) + const groupOptions = computed(() => { let filtered = props.groups.filter(g => !g.archived) if (showProjectSelect.value && form.projectId) { @@ -624,6 +661,12 @@ function toggleTag(id: number) { } } +function toggleCollaborator(userId: number) { + const idx = form.collaboratorIds.indexOf(userId) + if (idx >= 0) form.collaboratorIds.splice(idx, 1) + else form.collaboratorIds.push(userId) +} + const weekDays = computed(() => [ { value: 'monday', label: t('tasks.planning.days.mon') }, { value: 'tuesday', label: t('tasks.planning.days.tue') }, @@ -648,6 +691,7 @@ function populateForm(task: Task | null) { form.effortId = task.effort?.id ?? null form.priorityId = task.priority?.id ?? null form.assigneeId = task.assignee?.id ?? null + form.collaboratorIds = task.collaborators?.map(c => c.id) ?? [] form.groupId = task.group?.id ?? null form.tagIds = task.tags.map(t => t.id) form.clientTicketId = task.clientTicket?.id ?? null @@ -694,6 +738,7 @@ function populateForm(task: Task | null) { form.effortId = null form.priorityId = null form.assigneeId = null + form.collaboratorIds = [] form.groupId = null form.tagIds = [] form.clientTicketId = null @@ -906,6 +951,7 @@ async function handleSubmit() { effort: form.effortId ? `/api/task_efforts/${form.effortId}` : null, priority: form.priorityId ? `/api/task_priorities/${form.priorityId}` : null, assignee: form.assigneeId ? `/api/users/${form.assigneeId}` : null, + collaborators: form.collaboratorIds.map(id => `/api/users/${id}`), group: form.groupId ? `/api/task_groups/${form.groupId}` : null, project: `/api/projects/${resolvedProjectId.value}`, tags: form.tagIds.map(id => `/api/task_tags/${id}`),