diff --git a/apps/web/src/components/UserMultiSelect.vue b/apps/web/src/components/UserMultiSelect.vue index 8303563..e707fc5 100644 --- a/apps/web/src/components/UserMultiSelect.vue +++ b/apps/web/src/components/UserMultiSelect.vue @@ -168,13 +168,24 @@ function commit(ids: string[]) { function onUpdate(value: unknown) { const tokens = Array.isArray(value) ? value.map(String) : []; + const tokenSet = new Set(tokens); + const removedMemberIds = new Set(); + for (const token of selectValue.value) { + if (tokenSet.has(token)) continue; + const dropped = catalogByToken.value.get(token); + if (!dropped) continue; + for (const id of dropped.userIds) removedMemberIds.add(id); + } const ids = new Set(); const pins = new Set(); for (const token of tokens) { const group = catalogByToken.value.get(token); if (group) { pins.add(token); - for (const id of group.userIds) ids.add(id); + for (const id of group.userIds) { + if (removedMemberIds.has(id)) continue; + ids.add(id); + } continue; } if (!token.startsWith('role:') && !token.startsWith('team:')) ids.add(token); diff --git a/apps/web/src/views/ActivityDetailView.vue b/apps/web/src/views/ActivityDetailView.vue index 58883fb..21eb772 100644 --- a/apps/web/src/views/ActivityDetailView.vue +++ b/apps/web/src/views/ActivityDetailView.vue @@ -323,6 +323,18 @@ function shareExpanded(group: ShareGroup) { function toggleShare(group: ShareGroup) { shareOpen.value = { ...shareOpen.value, [group.key]: !shareExpanded(group) }; } + +function removeAssignees(ids: string[]) { + if (!canReassign.value || saving.value) return; + const drop = new Set(ids); + const next = assignUserIds.value.filter((id) => !drop.has(id)); + if (!next.length) { + error.value = 'حداقل یک مسئول لازم است.'; + return; + } + assignUserIds.value = next; + void reassign(); +} const myShareDone = computed(() => { const mine = auth.user?.id; return Boolean(mine && completedIds.value.has(mine)); @@ -808,21 +820,33 @@ onMounted(() => { {{ toFaDigits(shareDoneTotal) }} از {{ toFaDigits(assigneePeople.length) }} انجام شده

-