diff --git a/client/src/components/Modal Management/List.js b/client/src/components/Modal Management/List.js index aa08b1c..71eda1d 100644 --- a/client/src/components/Modal Management/List.js +++ b/client/src/components/Modal Management/List.js @@ -3,10 +3,11 @@ import Task from './View'; import CalendarView from '../../utils/CalendarView'; import { LayoutList, Calendar, PlusCircle, FolderPlus } from 'lucide-react'; -const TaskList = ({ tasks, removeTask, completeTask, isCompleted, addTask, updateTask }) => { +const TaskList = ({ tasks = [], removeTask, completeTask, isCompleted, addTask, updateTask }) => { const [quickTaskInput, setQuickTaskInput] = useState(''); const [isCalendarView, setIsCalendarView] = useState(false); const [activeTab, setActiveTab] = useState('tasks'); + const [showAllCompleted, setShowAllCompleted] = useState(false); const handleQuickAdd = (e) => { if (e.key === 'Enter' && quickTaskInput.trim()) { @@ -24,7 +25,7 @@ const TaskList = ({ tasks, removeTask, completeTask, isCompleted, addTask, updat }; // Separate tasks and projects - const { regularTasks, projects } = tasks.reduce((acc, task) => { + const { regularTasks, projects } = (tasks || []).reduce((acc, task) => { if (task.subtasks) { acc.projects.push(task); } else { @@ -77,6 +78,23 @@ const TaskList = ({ tasks, removeTask, completeTask, isCompleted, addTask, updat return 0; }); + const COMPLETED_TASKS_LIMIT = 3; + const limitedGroups = isCompleted ? + sortedGroups.reduce((acc, [date, tasks]) => { + const totalTasksSoFar = acc.length > 0 ? + acc.reduce((sum, [_, groupTasks]) => sum + (groupTasks?.length || 0), 0) : 0; + + if (totalTasksSoFar < COMPLETED_TASKS_LIMIT) { + const remainingSlots = COMPLETED_TASKS_LIMIT - totalTasksSoFar; + const limitedTasks = tasks?.slice(0, remainingSlots) || []; + if (limitedTasks.length > 0) { + acc.push([date, limitedTasks]); + } + } + return acc; + }, []) : + sortedGroups; + return (
{!isCompleted ? ( @@ -122,44 +140,44 @@ const TaskList = ({ tasks, removeTask, completeTask, isCompleted, addTask, updat
@@ -175,7 +193,7 @@ const TaskList = ({ tasks, removeTask, completeTask, isCompleted, addTask, updat ) : (
- {sortedGroups.map(([date, dateTasks]) => ( + {(showAllCompleted ? sortedGroups : limitedGroups).map(([date, dateTasks]) => (
{date} @@ -194,6 +212,55 @@ const TaskList = ({ tasks, removeTask, completeTask, isCompleted, addTask, updat
))} + + {isCompleted && !showAllCompleted && (tasks || []).length > COMPLETED_TASKS_LIMIT && ( + + )} + + {showAllCompleted && ( +
+
+
+ +
+
+ {sortedGroups.map(([date, dateTasks]) => ( +
+
+ {date} +
+
    + {dateTasks.map((task) => ( + + ))} +
+
+ ))} +
+
+
+ )} + {!isCompleted && sortedTasks.length === 0 && (
{activeTab === 'tasks' ? ( diff --git a/client/tailwind.config.js b/client/tailwind.config.js index f534eb1..deba3b3 100644 --- a/client/tailwind.config.js +++ b/client/tailwind.config.js @@ -7,6 +7,9 @@ module.exports = { darkMode: 'class', theme: { extend: { + screens: { + 'xs': '480px', + }, keyframes: { fadeIn: { '0%': { opacity: '0' },