diff --git a/client/src/components/task_item.tsx b/client/src/components/task_item.tsx index 13c957f..8cf8e84 100644 --- a/client/src/components/task_item.tsx +++ b/client/src/components/task_item.tsx @@ -30,6 +30,7 @@ type ItemProps = { item: Item; onToggle?: (id: number) => void; onUpdate: (item: Item) => void; + onDelete: (id: number) => void; availableTopics: Topic[]; }; @@ -41,6 +42,7 @@ export function TaskItem({ item, onToggle, onUpdate, + onDelete, availableTopics, }: ItemProps) { { @@ -210,6 +212,8 @@ export function TaskItem({ )} + + {/* Edit Button */}
{isEditing ? ( <> @@ -222,6 +226,18 @@ export function TaskItem({ )}
+ + {/* Delete Button */} +
+ {!isEditing && ( + + )} +
); } diff --git a/client/src/components/task_list.tsx b/client/src/components/task_list.tsx index 17827c4..f9edc08 100644 --- a/client/src/components/task_list.tsx +++ b/client/src/components/task_list.tsx @@ -27,6 +27,7 @@ type ListProps = { items: Item[]; onToggleTask?: (id: number) => void; onUpdate: (item: Item) => void; + onDelete: (id: number) => void; availableTopics: Topic[]; }; @@ -34,6 +35,7 @@ export function TaskList({ items, onToggleTask, onUpdate, + onDelete, availableTopics, }: ListProps) { if (items.length === 0) { @@ -52,6 +54,7 @@ export function TaskList({ item={item} onToggle={onToggleTask} onUpdate={onUpdate} + onDelete={onDelete} availableTopics={availableTopics} /> diff --git a/client/src/pages/tasks.tsx b/client/src/pages/tasks.tsx index 3da6179..eaca766 100644 --- a/client/src/pages/tasks.tsx +++ b/client/src/pages/tasks.tsx @@ -126,6 +126,25 @@ export default function TasksPage() { setItems((prev) => prev.map((t) => (t.id === updated.id ? updated : t))); } + async function handleTaskDeleted(id: number) { + if (!window.confirm("Delete this task?")) return; + + try { + const response = await fetch( + `http://localhost:8000/api/planner/tasks/${id}/`, + { method: "DELETE" }, + ); + + if (!response.ok) { + throw new Error("Failed to delete task"); + } + + setItems((prev) => prev.filter((item) => item.id !== id)); + } catch (error) { + console.error("Error deleting task:", error); + } + } + return (
@@ -134,6 +153,7 @@ export default function TasksPage() { items={items} onToggleTask={handleToggleTask} onUpdate={handleTaskUpdated} + onDelete={handleTaskDeleted} availableTopics={availableTopics} />
diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 0000000..b280e8b --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "server", + "lockfileVersion": 3, + "requires": true, + "packages": {} +}