From 0c3287a44e3e193e7c4eb334a1b525a62c47bd38 Mon Sep 17 00:00:00 2001 From: vibhor121 Date: Wed, 10 Sep 2025 11:14:31 +0530 Subject: [PATCH] feat: Add task details modal with view-only functionality - Create TaskDetailsModal component for viewing complete task information - Add View Details button (eye icon) to task tables in dashboard and team pages - Display task title, description, status, priority, assignee, created by, due date, labels, tags, and watchlist status - Use large textarea for easy reading of task descriptions - Remove edit functionality to keep it as view-only feature - Integrate modal into both main task list and team task list components --- components/task-details-modal.tsx | 232 ++++++++++++++++++++++++++++++ components/todo-list-table.tsx | 9 ++ modules/teams/team-tasks.tsx | 13 +- 3 files changed, 252 insertions(+), 2 deletions(-) create mode 100644 components/task-details-modal.tsx diff --git a/components/task-details-modal.tsx b/components/task-details-modal.tsx new file mode 100644 index 0000000..46ef750 --- /dev/null +++ b/components/task-details-modal.tsx @@ -0,0 +1,232 @@ +'use client' + +import { TTask } from '@/api/tasks/tasks.types' +import { Button } from '@/components/ui/button' +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, +} from '@/components/ui/dialog' +import { Label } from '@/components/ui/label' +import { Separator } from '@/components/ui/separator' +import { Textarea } from '@/components/ui/textarea' +import { DateFormats, DateUtil } from '@/lib/date-util' +import { CalendarIcon, ClockIcon, TagIcon, UserIcon, UserPlusIcon } from 'lucide-react' +import { useState } from 'react' +import { TaskPriorityLabel } from './task-priority-label' +import { TodoLabelsList } from './todo-labels-list' +import { TodoStatusTable } from './todo-status-table' + +type TaskDetailsModalProps = { + task: TTask + children: React.ReactNode +} + +export function TaskDetailsModal({ task, children }: TaskDetailsModalProps) { + const [isOpen, setIsOpen] = useState(false) + + return ( + + + {children} + + + + + Task Details + + + +
+ {/* Task Title */} +
+ +
+ {task.title} +
+
+ + {/* Description */} +
+ +
+