From f857ae3e2db6d3d562957c4cf1d7cfd3e2dc4f3f Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 2 Mar 2025 17:45:56 +0300 Subject: [PATCH] rainbow vomit --- .../src/components/CardGroup/CardGroup.tsx | 2 +- .../src/components/MainBoard/MainBoard.tsx | 3 +- .../src/components/TaskCard/TaskCard.tsx | 49 +++++++++++++++++-- cool_todo_manager/src/services/mainApi.ts | 2 +- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/cool_todo_manager/src/components/CardGroup/CardGroup.tsx b/cool_todo_manager/src/components/CardGroup/CardGroup.tsx index ce655b8..fa0ed1d 100644 --- a/cool_todo_manager/src/components/CardGroup/CardGroup.tsx +++ b/cool_todo_manager/src/components/CardGroup/CardGroup.tsx @@ -46,7 +46,7 @@ export default function CardGroup(props: TCardGroup) { data.map((task, i) => ( - + {!isLoading && (cringe as any[]).map((item: any) => ( @@ -44,7 +44,6 @@ export default function MainBoard() { - ); diff --git a/cool_todo_manager/src/components/TaskCard/TaskCard.tsx b/cool_todo_manager/src/components/TaskCard/TaskCard.tsx index 490a6fe..83a99dd 100644 --- a/cool_todo_manager/src/components/TaskCard/TaskCard.tsx +++ b/cool_todo_manager/src/components/TaskCard/TaskCard.tsx @@ -1,26 +1,65 @@ import { Draggable } from '@hello-pangea/dnd'; -import { Button, Card, Flex, Text } from '@radix-ui/themes'; +import { Badge, Button, Card, Flex, Text } from '@radix-ui/themes'; +import { useUpdateTaskMutation } from '../../services/mainApi'; type TTaskCard = { title?: string; description?: string; id?: string; index?: number; - status: "todo" | "in-progress" | "completed"; + status: 'todo' | 'in-progress' | 'completed'; }; +const badgeNames = { + todo: 'To do', + 'in-progress': 'In progress', + completed: 'Completed', +} as const + +const badgeColors = { + todo: 'blue', + 'in-progress': 'orange', + completed: 'green', +} as const + export default function TaskCard(props: TTaskCard) { + const [updateTask] = useUpdateTaskMutation(); + + const updateStatus = (newStatus: 'todo' | 'in-progress' | 'completed') => { + updateTask({ id: props.id, status: newStatus }); + }; + return ( {(provided) => ( - {props.title} - + + {props.title} + {badgeNames[props.status]} + + + + + {props.status !== 'todo' && ( + + )} + {props.status !== 'in-progress' && ( + + )} + {props.status !== 'completed' && ( + + )} )} diff --git a/cool_todo_manager/src/services/mainApi.ts b/cool_todo_manager/src/services/mainApi.ts index f39a73d..3dbcdb8 100644 --- a/cool_todo_manager/src/services/mainApi.ts +++ b/cool_todo_manager/src/services/mainApi.ts @@ -57,7 +57,7 @@ export const mainApi = createApi({ query: (task) => ({ url: `tasks/${task.id}`, method: 'PATCH', - body: task, + body: {status: task.status}, }), invalidatesTags: (result, error, id) => [{ type: 'Task', id }], }),