diff --git a/app/(auth)/_layout.tsx b/app/(auth)/_layout.tsx index b6e8aee..42a9438 100644 --- a/app/(auth)/_layout.tsx +++ b/app/(auth)/_layout.tsx @@ -90,7 +90,7 @@ export default function TabLayout() { />*/} props.navigation.navigate("todos")} icon={ @@ -197,7 +197,7 @@ export default function TabLayout() { name="todos" options={{ drawerLabel: "To-Do", - title: "To-Do", + title: "To-Do's", }} /> diff --git a/components/pages/todos/AddChore.tsx b/components/pages/todos/AddChore.tsx index 0fc2803..aface01 100644 --- a/components/pages/todos/AddChore.tsx +++ b/components/pages/todos/AddChore.tsx @@ -44,7 +44,7 @@ const AddChore = () => { > - Add to do + Add To Do diff --git a/components/pages/todos/ToDosList.tsx b/components/pages/todos/ToDosList.tsx index 1571c3f..5cb8d30 100644 --- a/components/pages/todos/ToDosList.tsx +++ b/components/pages/todos/ToDosList.tsx @@ -1,8 +1,10 @@ -import { View, Text } from "react-native-ui-lib"; -import React from "react"; +import { View, Text, TouchableOpacity, Icon } from "react-native-ui-lib"; +import React, { useState } from "react"; import { IToDo, useToDosContext } from "@/contexts/ToDosContext"; import ToDoItem from "./ToDoItem"; -import { format, isToday, isTomorrow } from "date-fns"; +import { format, isToday, isTomorrow } from "date-fns"; +import DropModalIcon from "@/assets/svgs/DropModalIcon"; +import { AntDesign } from "@expo/vector-icons"; const groupToDosByDate = (toDos: IToDo[]) => { return toDos.reduce((groups, toDo) => { @@ -31,23 +33,53 @@ const ToDosList = () => { const { toDos } = useToDosContext(); const groupedToDos = groupToDosByDate(toDos); + const [expandedGroups, setExpandedGroups] = useState<{ + [key: string]: boolean; + }>({}); + + const [expandNoDate, setExpandNoDate] = useState(true); + + const toggleExpand = (dateKey: string) => { + setExpandedGroups((prev) => ({ + ...prev, + [dateKey]: !prev[dateKey], + })); + }; + const noDateToDos = groupedToDos["No Date"] || []; - const datedToDos = Object.keys(groupedToDos).filter((key) => key !== "No Date"); + const datedToDos = Object.keys(groupedToDos).filter( + (key) => key !== "No Date" + ); return ( - - + {noDateToDos.length > 0 && ( - {noDateToDos - .sort((a, b) => Number(a.done) - Number(b.done)) - .map((item) => ( - - ))} + + + Unscheduled + + {!expandNoDate && ( + {setExpandNoDate(!expandNoDate)}}/> + )} + {expandNoDate && ( + {setExpandNoDate(!expandNoDate)}}/> + )} + + {expandNoDate && + noDateToDos + .sort((a, b) => Number(a.done) - Number(b.done)) + .map((item) => )} )} {datedToDos.map((dateKey) => { + const isExpanded = expandedGroups[dateKey] || false; const sortedToDos = [ ...groupedToDos[dateKey].filter((toDo) => !toDo.done), ...groupedToDos[dateKey].filter((toDo) => toDo.done), @@ -55,19 +87,34 @@ const ToDosList = () => { return ( - toggleExpand(dateKey)} style={{ - fontWeight: "bold", - marginVertical: 8, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", paddingHorizontal: 20, + marginVertical: 8, }} > - {dateKey} - - {sortedToDos.map((item) => ( - - ))} + + {dateKey} + + {!isExpanded && ( + + )} + {isExpanded && ( + + )} + + + {isExpanded && + sortedToDos.map((item) => )} ); })}