diff --git a/client/src/components/TasksWithCalendar.tsx b/client/src/components/TasksWithCalendar.tsx index a4e69fe..fb37f31 100644 --- a/client/src/components/TasksWithCalendar.tsx +++ b/client/src/components/TasksWithCalendar.tsx @@ -16,7 +16,7 @@ import { HoverCardContent, HoverCardTrigger, } from "@/components/ui/hover-card"; -import { Search, Filter, SortAsc, Calendar, ChevronLeft, ChevronRight, Edit, Timer, CheckCircle, Play, Clock, Trash2 } from 'lucide-react'; +import { Search, Filter, SortAsc, Calendar, ChevronLeft, ChevronRight, Edit, Timer, CheckCircle, Play, Clock, Trash2, Tag } from 'lucide-react'; import { Task, Label } from '@shared/schema'; import TaskCard from './TaskCard'; import { useQuery } from '@tanstack/react-query'; @@ -43,6 +43,7 @@ export default function TasksWithCalendar({ tasks, onTaskUpdate, onTaskEdit, onT const [searchQuery, setSearchQuery] = useState(''); const [sortBy, setSortBy] = useState('dueDate'); const [filterBy, setFilterBy] = useState('open'); + const [filterByLabel, setFilterByLabel] = useState('all'); const [calendarStartDate, setCalendarStartDate] = useState(startOfToday()); const [draggedTask, setDraggedTask] = useState(null); const [hoveredDate, setHoveredDate] = useState(null); @@ -96,6 +97,11 @@ export default function TasksWithCalendar({ tasks, onTaskUpdate, onTaskEdit, onT if (!matchesSearch) return false; + // Label filter + if (filterByLabel !== 'all') { + if (task.labelId !== filterByLabel) return false; + } + // Status filter switch (filterBy) { case 'overdue': @@ -251,7 +257,7 @@ export default function TasksWithCalendar({ tasks, onTaskUpdate, onTaskEdit, onT }; return ( -
+
{/* Header and Search Filters - Fixed at Top */}
@@ -283,9 +289,9 @@ export default function TasksWithCalendar({ tasks, onTaskUpdate, onTaskEdit, onT setFilterBy(value); console.log('Filter changed to:', value); }}> - -
- + +
+
@@ -301,13 +307,39 @@ export default function TasksWithCalendar({ tasks, onTaskUpdate, onTaskEdit, onT + +