onGroupDragStart(e, group.id)}
+ onDragOver={onGroupDragOver}
+ onDrop={e => onGroupDrop(e, group.id)}
+ >
+
{group.name}
+ {group.tasks.length}
+
+ {/* If group is empty, render a drop zone */}
+ {group.tasks.length === 0 && (
+
{ e.preventDefault(); onTaskDragOver(e, group.id, 0); }}
+ onDrop={e => { e.preventDefault(); onTaskDrop(e, group.id, 0); }}
+ >
+ {/* Drop indicator at the end of the group */}
+ {hoveredGroupId === group.id && hoveredTaskIdx === group.tasks.length && (
+
+ )}
+ {(isOwnerOrAdmin || isProjectManager) && !showNewCardTop && !showNewCardBottom && (
+
}
+ onClick={() => {
+ setShowNewCardBottom(false);
+ setShowNewCardTop(true);
+ }}
+ >
+ {t('addTask')}
+
+ )}
+ {showNewCardTop &&
}
+
+ )}
+
+ {/* Drop indicator at the top of the group */}
+ {hoveredGroupId === group.id && hoveredTaskIdx === 0 && (
+
+ )}
+
+ {group.tasks.map((task, idx) => (
+
+
+
+ ))}
+ {(isOwnerOrAdmin || isProjectManager) && !showNewCardTop && !showNewCardBottom && group.tasks.length > 0 && (
+
}
+ onClick={() => {
+ setShowNewCardBottom(true);
+ setShowNewCardTop(false);
+ }}
+ >
+ {t('addTask')}
+
+ )}
+ {showNewCardBottom &&
}
+
+ {/* Drop indicator at the end of the group */}
+ {hoveredGroupId === group.id && hoveredTaskIdx === group.tasks.length && (
+
+ )}
+