Skip to content

Commit 0f446fd

Browse files
committed
Refactor TaskPage and TaskList components
1 parent 38801b8 commit 0f446fd

File tree

3 files changed

+48
-45
lines changed

3 files changed

+48
-45
lines changed

src/components/TaskPage.tsx

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ export default function TaskPage() {
4040
console.log('after task object', Taskobject)
4141
Taskobject.getTaskCategories().then((data) => {
4242
setTaskCategoryList(data)
43-
if (data.length > 0) setActiveTaskCategory(0)
4443
return data
4544
}).then(() => {
4645
Taskobject.getTasksByCategoryPosition(activeTaskCategory >= 0 ? activeTaskCategory : 0).then((data) => {
@@ -63,23 +62,25 @@ export default function TaskPage() {
6362

6463
return (
6564
<div className="">
66-
<Tabs variant='soft-rounded' colorScheme='green' h='80%' index={activeTaskCategory} defaultIndex={activeTaskCategory}>
65+
<Tabs variant='soft-rounded' colorScheme='green' h='80%' defaultIndex={activeTaskCategory} >
6766
<TaskCategoryList />
6867
{
69-
loading || taskCategoryList.length <= 0 ? (
68+
loading || taskCategoryList?.length <= 0 ? (
7069
<Box p={4} h='90%' display='flex' justifyContent='center' alignItems='center'>
71-
<Spinner size='xl' />
70+
<Spinner size='xl' />
7271
</Box>) : (
73-
<Box p={4} h='90%'>
74-
<TabPanels>
75-
<TaskList />
76-
{ taskCategoryList.length > 0 && activeTaskCategory >= 0 &&
77-
(
78-
<AddTaskForm />
79-
)
80-
}
81-
</TabPanels>
82-
</Box>
72+
<>
73+
<TabPanels p={4} h='90%'>
74+
{
75+
taskCategoryList?.map((val, key) => (
76+
<TaskList key={key} taskCategory={val?.tasks ?? []} />
77+
))
78+
}
79+
</TabPanels>
80+
<Box >
81+
{ taskCategoryList.length > 0 && activeTaskCategory >= 0 && <AddTaskForm />}
82+
</Box>
83+
</>
8384
)
8485
}
8586
</Tabs>

src/components/ui/TaskCategoryList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { Tab, TabList } from "@chakra-ui/react";
2-
import { useRecoilValue, useSetRecoilState } from "recoil";
2+
import { useRecoilState, useRecoilValue } from "recoil";
33
import { activeTaskCategoryState, taskCategoriesListSelector } from "../../config/states";
44
import { taskCategory } from "../../types/taskapi";
55

66
export default function TaskCategoryList() {
7-
const setActiveTaskCategory = useSetRecoilState<number>(activeTaskCategoryState)
7+
const [activeTaskCategory, setActiveTaskCategory] = useRecoilState<number>(activeTaskCategoryState)
88
const taskCategoryList = useRecoilValue<taskCategory[]>(taskCategoriesListSelector)
99
return (
1010
<TabList w="100%" overflowX="auto" gap={2} px={2} py={1} borderRadius="md" scrollBehavior="smooth" >

src/components/ui/TaskList.tsx

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,45 @@ import { useRecoilValue } from "recoil"
22
import { activeCategoryTasksSelector, activeCategoryTasksState } from "../../config/states"
33
import { task } from "../../types/taskapi"
44
import TaskItem from "./TaskItem"
5-
import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Center } from "@chakra-ui/react"
5+
import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Center, TabPanel } from "@chakra-ui/react"
66

7-
export default function TaskList() {
8-
const activeCategoryTasks = useRecoilValue<task[]>(activeCategoryTasksState)
7+
export default function TaskList({taskCategory} : {taskCategory: task[]}) {
8+
const activeCategoryTasks = useRecoilValue<task[]>(activeCategoryTasksState) ?? taskCategory
99

1010
const unCompletedTasks = activeCategoryTasks.filter(task => !task.completed)
1111
const CompletedTasks = activeCategoryTasks.filter(task => task.completed)
1212

1313

1414
return (
15-
<Accordion defaultIndex={[0]} allowToggle>
16-
<AccordionItem>
17-
<AccordionButton _expanded={{ bg: 'teal', color: 'white' }} >
18-
<Box as="span" flex='1' textAlign='left'>
19-
UnCompleted
20-
</Box>
21-
<AccordionIcon />
22-
</AccordionButton>
23-
<AccordionPanel pb={4}>
24-
<Box>
25-
{unCompletedTasks.length > 0 ? unCompletedTasks.map((task, key) => <TaskItem key={key} task={task} />) : <Center h="40vh">Congrate you completed all your task</Center>}
15+
<TabPanel>
16+
<Accordion defaultIndex={[0]} allowToggle>
17+
<AccordionItem>
18+
<AccordionButton _expanded={{ bg: 'teal', color: 'white' }} >
19+
<Box as="span" flex='1' textAlign='left'>
20+
UnCompleted
2621
</Box>
27-
</AccordionPanel>
28-
</AccordionItem>
29-
<AccordionItem>
30-
<AccordionButton>
31-
<Box as="span" flex='1' textAlign='left'>
32-
Completed
33-
</Box>
34-
<AccordionIcon />
35-
</AccordionButton>
36-
<AccordionPanel pb={4}>
37-
<Box>
38-
{CompletedTasks.map((task, key) => <TaskItem key={key} task={task} />)}
22+
<AccordionIcon />
23+
</AccordionButton>
24+
<AccordionPanel pb={4}>
25+
<Box>
26+
{unCompletedTasks.length > 0 ? unCompletedTasks.map((task, key) => <TaskItem key={key} task={task} />) : <Center h="40vh">Congrate you completed all your task</Center>}
27+
</Box>
28+
</AccordionPanel>
29+
</AccordionItem>
30+
<AccordionItem>
31+
<AccordionButton>
32+
<Box as="span" flex='1' textAlign='left'>
33+
Completed
3934
</Box>
40-
</AccordionPanel>
41-
</AccordionItem>
42-
</Accordion>
35+
<AccordionIcon />
36+
</AccordionButton>
37+
<AccordionPanel pb={4}>
38+
<Box>
39+
{CompletedTasks.map((task, key) => <TaskItem key={key} task={task} />)}
40+
</Box>
41+
</AccordionPanel>
42+
</AccordionItem>
43+
</Accordion>
44+
</TabPanel>
4345
)
4446
}

0 commit comments

Comments
 (0)