diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoardNativeDnD/TaskCard.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoardNativeDnD/TaskCard.tsx index 45c47d7d..1929351d 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoardNativeDnD/TaskCard.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoardNativeDnD/TaskCard.tsx @@ -1,7 +1,13 @@ -import React, { memo } from 'react'; +import React, { memo, useCallback } from 'react'; import { useSelector } from 'react-redux'; import { RootState } from '@/app/store'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; +import { useAppDispatch } from '@/hooks/useAppDispatch'; +import { setSelectedTaskId, setShowTaskDrawer } from '@/features/task-drawer/task-drawer.slice'; +import { useTranslation } from 'react-i18next'; +import AvatarGroup from '@/components/AvatarGroup'; +import LazyAssigneeSelectorWrapper from '@/components/task-management/lazy-assignee-selector'; +import { format } from 'date-fns'; interface TaskCardProps { task: IProjectTask; @@ -25,6 +31,15 @@ const TaskCard: React.FC = memo(({ const themeMode = useSelector((state: RootState) => state.themeReducer.mode); const background = themeMode === 'dark' ? '#23272f' : '#fff'; const color = themeMode === 'dark' ? '#fff' : '#23272f'; + const dispatch = useAppDispatch(); + const { t } = useTranslation('kanban-board'); + + const handleCardClick = useCallback((e: React.MouseEvent, id: string) => { + // Prevent the event from propagating to parent elements + e.stopPropagation(); + dispatch(setSelectedTaskId(id)); + dispatch(setShowTaskDrawer(true)); + }, [dispatch]); return ( <> @@ -32,7 +47,7 @@ const TaskCard: React.FC = memo(({
= memo(({ onDragOver={e => onTaskDragOver(e, groupId, idx)} onDrop={e => onTaskDrop(e, groupId, idx)} style={{ background, color }} + onClick={e => handleCardClick(e, task.id!)} >
-
{task.name}
-
{task.task_key}
-
- {task.assignees?.map(a => a.name).join(', ')} +
+ {task.labels?.map(label => ( +
+ {label.name} +
+ ))} +
+
+
+
{task.name}
+
+ +
+
+ + +
+
+ {task.end_date ? format(new Date(task.end_date), 'MMM d, yyyy') : ''} +