From 79d5fae97ccd29a57304759f1d001545b54af3ac Mon Sep 17 00:00:00 2001 From: NotiBot Date: Tue, 3 Feb 2026 14:10:29 +0100 Subject: [PATCH] =?UTF-8?q?Label-Filter=20hinzuf=C3=BCgen=20und=20Responsi?= =?UTF-8?q?ve-Bug=20auf=20der=20Tasks-Seite=20beheben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Label-Filter-Dropdown auf der Tasks-Übersichtsseite hinzugefügt (Tag-Icon, zeigt alle Labels mit Farbpunkt) - Responsive-Bug behoben: Breakpoint-Mismatch bei negativen Margins (sm:-mx-6 → md:-mx-6) verursachte horizontales Scrollen zwischen 640-768px - overflow-x-hidden auf den Hauptcontainer gesetzt - Alle Select-Trigger mit min-w-0, truncate und shrink-0 Icons versehen für bessere Responsivität --- client/src/components/TasksWithCalendar.tsx | 50 +++++++++++++++++---- 1 file changed, 41 insertions(+), 9 deletions(-) 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 + +