diff --git a/web/src/components/board/BulkActionsBar.tsx b/web/src/components/board/BulkActionsBar.tsx index 8e0a05d3..90929944 100644 --- a/web/src/components/board/BulkActionsBar.tsx +++ b/web/src/components/board/BulkActionsBar.tsx @@ -64,6 +64,7 @@ export function BulkActionsBar({ tasks }: BulkActionsBarProps) { const [showDeleteConfirm, setShowDeleteConfirm] = useState(false); const [isProcessing, setIsProcessing] = useState(false); + const [moveTarget, setMoveTarget] = useState(null); // Group task IDs by status const taskIdsByStatus = useMemo(() => { @@ -109,13 +110,17 @@ export function BulkActionsBar({ tasks }: BulkActionsBarProps) { return someSelected && !allSelectedInGroup; }; - const handleMoveToStatus = async (status: TaskStatus) => { + const handleMoveToStatus = async () => { + if (!moveTarget) return; setIsProcessing(true); try { await Promise.all( - Array.from(selectedIds).map((id) => updateTask.mutateAsync({ id, input: { status } })) + Array.from(selectedIds).map((id) => + updateTask.mutateAsync({ id, input: { status: moveTarget } }) + ) ); clearSelection(); + setMoveTarget(null); } finally { setIsProcessing(false); } @@ -210,16 +215,20 @@ export function BulkActionsBar({ tasks }: BulkActionsBarProps) { {selectedCount > 0 && (
- {/* Move to status */} + {/* Move to status — two-step: pick target → confirm */} + {moveTarget && ( + + )} + {/* Archive */}