diff --git a/src/components/accordion-item.tsx b/src/components/accordion-item.tsx index 91512f8..cc5ce36 100644 --- a/src/components/accordion-item.tsx +++ b/src/components/accordion-item.tsx @@ -1,15 +1,17 @@ -import { } from 'react' +import { useState } from 'react' + +export function AccordionItem({ title, children, isOpen }: { title: string; children: JSX.Element; isOpen?: boolean }) { + const [open, setOpen] = useState(isOpen); -export function AccordionItem({ title, children, isOpen, onClick }: { title: string; children: JSX.Element; isOpen: boolean, onClick: () => void; }) { return ( <> - - {isOpen &&
{children}
} + {open &&
{children}
} ); } diff --git a/src/components/task-form.tsx b/src/components/task-form.tsx index ff4b17c..5773f73 100644 --- a/src/components/task-form.tsx +++ b/src/components/task-form.tsx @@ -7,6 +7,7 @@ export function TaskForm({ createTask }: { createTask: (t: Record { event.preventDefault(); createTask(Object.fromEntries(new FormData(event.currentTarget))); + event.currentTarget.reset(); }}>
diff --git a/src/routes/list.tsx b/src/routes/list.tsx index 042df93..d13771e 100644 --- a/src/routes/list.tsx +++ b/src/routes/list.tsx @@ -25,10 +25,6 @@ function App() { }, ]); - const [expanded, setExpanded] = useState(0); - - const handleAccordion = (panel: number) => setExpanded(expanded == panel ? -1 : panel); - const createTask = (data: Record) => { const task = { id: tasks.reduce((max, row) => row.id > max ? row.id : max, 1) + 1, @@ -37,12 +33,9 @@ function App() { status: data.status as TaskStatus, }; - if (data.insert) { - setTasks([task, ...tasks]); - } else { - setTasks([...tasks, task]); - } - setExpanded(0); + setTasks(data.insert ? [task, ...tasks] : [...tasks, task]); + + scroll(0, 0); } const updateTask = (task: TodoTask) => { @@ -61,22 +54,22 @@ function App() { const task = tasks[from] if (from === to || from > length || to > length) { - return; + return; } setTasks(tasks.flatMap((item, index) => { - if (index === from) return []; - if (index === to) return from < to ? [item, task] : [task, item]; - return item; + if (index === from) return []; + if (index === to) return from < to ? [item, task] : [task, item]; + return item; })); }; return ( <> - handleAccordion(0)}> + - handleAccordion(1)}> +