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' },