diff --git a/web/components/custom/sidebar/partial/task-section.tsx b/web/components/custom/sidebar/partial/task-section.tsx index ae90e9a2..3746c826 100644 --- a/web/components/custom/sidebar/partial/task-section.tsx +++ b/web/components/custom/sidebar/partial/task-section.tsx @@ -71,11 +71,6 @@ export const TaskSection: React.FC<{ pathname: string }> = ({ pathname }) => { count={upcomingTasks.length} isActive={pathname === "/tasks/upcoming"} /> - {isFetching ? ( -
Fetching tasks...
- ) : ( - - )} ) } @@ -105,13 +100,3 @@ const TaskSectionHeader: React.FC = ({ title, href, coun ) - -interface ListProps { - tasks: (Task | null)[] | undefined -} - -const List: React.FC = ({ tasks }) => { - return ( -
{tasks?.filter((task): task is Task => task !== null).map(task =>
{task.title}
)}
- ) -} diff --git a/web/components/routes/task/TaskForm.tsx b/web/components/routes/task/TaskForm.tsx index 98bdda9a..ca3cf973 100644 --- a/web/components/routes/task/TaskForm.tsx +++ b/web/components/routes/task/TaskForm.tsx @@ -1,126 +1,3 @@ -// import { useState, useEffect, useRef } from "react" -// import { motion, AnimatePresence } from "framer-motion" -// import { ListOfTasks, Task } from "@/lib/schema/tasks" -// import { Input } from "@/components/ui/input" -// import { Button } from "@/components/ui/button" -// import { useAccount } from "@/lib/providers/jazz-provider" -// import { LaIcon } from "@/components/custom/la-icon" -// import { Checkbox } from "@/components/ui/checkbox" -// import { format } from "date-fns" -// import { DatePicker } from "@/components/ui/date-picker" - -// interface TaskFormProps { -// filter?: "today" | "upcoming" -// } - -// export const TaskForm: React.FC = ({ filter }) => { -// const [title, setTitle] = useState("") -// const [dueDate, setDueDate] = useState(filter === "today" ? new Date() : undefined) -// const [inputVisible, setInputVisible] = useState(false) -// const { me } = useAccount({ root: {} }) -// const inputRef = useRef(null) - -// const handleSubmit = (e: React.FormEvent) => { -// e.preventDefault() -// if (title.trim() && (filter !== "upcoming" || dueDate)) { -// if (me?.root?.tasks === undefined) { -// if (!me) return -// me.root.tasks = ListOfTasks.create([], { owner: me }) -// } - -// const newTask = Task.create( -// { -// title, -// description: "", -// status: "todo", -// createdAt: new Date(), -// updatedAt: new Date(), -// dueDate: dueDate || null -// }, -// { owner: me._owner } -// ) -// me.root.tasks?.push(newTask) -// resetForm() -// } -// } - -// const resetForm = () => { -// setTitle("") -// setDueDate(filter === "today" ? new Date() : undefined) -// setInputVisible(false) -// } - -// const handleKeyDown = (e: React.KeyboardEvent) => { -// if (e.key === "Escape") { -// resetForm() -// } else if (e.key === "Backspace" && title.trim() === "") { -// resetForm() -// } -// } - -// useEffect(() => { -// if (inputVisible && inputRef.current) { -// inputRef.current.focus() -// } -// }, [inputVisible]) - -// const formattedDate = dueDate ? format(dueDate, "EEE, MMMM do, yyyy") : "Select a date" - -// return ( -//
-// -// {!inputVisible ? ( -// -// -// -// ) : ( -// -//
-// {}} /> -// setTitle(e.target.value)} -// onKeyDown={handleKeyDown} -// placeholder="Task title" -// /> -//
-//
-// {filter === "upcoming" && ( -// setDueDate(date)} /> -// )} -// {formattedDate} -//
-//
-// )} -//
-//
-// ) -// } - import { useState, useEffect, useRef } from "react" import { motion, AnimatePresence } from "framer-motion" import { ListOfTasks, Task } from "@/lib/schema/tasks" @@ -145,7 +22,7 @@ export const TaskForm: React.FC = ({ filter }) => { const handleSubmit = (e: React.FormEvent) => { e.preventDefault() - if (title.trim() && (filter === "today" || (filter === "upcoming" && dueDate))) { + if (title.trim() && (filter !== "upcoming" || dueDate)) { if (me?.root?.tasks === undefined) { if (!me) return me.root.tasks = ListOfTasks.create([], { owner: me }) @@ -158,7 +35,7 @@ export const TaskForm: React.FC = ({ filter }) => { status: "todo", createdAt: new Date(), updatedAt: new Date(), - dueDate: dueDate || (filter === "today" ? new Date() : null) + dueDate: filter === "upcoming" ? dueDate : filter === "today" ? new Date() : null }, { owner: me._owner } ) diff --git a/web/components/routes/task/TaskItem.tsx b/web/components/routes/task/TaskItem.tsx index ee20ef2e..509fc1c3 100644 --- a/web/components/routes/task/TaskItem.tsx +++ b/web/components/routes/task/TaskItem.tsx @@ -2,7 +2,6 @@ import { Task } from "@/lib/schema/tasks" import { Checkbox } from "@/components/ui/checkbox" import { format } from "date-fns" import { useState, useRef, useEffect } from "react" -import { Input } from "@/components/ui/input" interface TaskItemProps { task: Task @@ -50,7 +49,7 @@ export const TaskItem: React.FC = ({ task, onUpdateTask, onDelete } } - const formattedDate = format(new Date(task.createdAt), "EEE, MMMM do, yyyy") + const formattedDate = task.dueDate ? format(new Date(task.dueDate), "EEE, MMMM do, yyyy") : "No due date" return (
  • diff --git a/web/components/routes/task/TaskRoute.tsx b/web/components/routes/task/TaskRoute.tsx index 9a3278fd..ce53bc12 100644 --- a/web/components/routes/task/TaskRoute.tsx +++ b/web/components/routes/task/TaskRoute.tsx @@ -46,7 +46,10 @@ export const TaskRoute: React.FC = ({ filter }) => { return (
    - +

    {filter === "today" ? "Today's Tasks" : filter === "upcoming" ? "Upcoming Tasks" : "All Tasks"}

    diff --git a/web/components/routes/task/new-task-actions.ts b/web/components/routes/task/new-task-actions.ts index 484a8dbb..e65e3384 100644 --- a/web/components/routes/task/new-task-actions.ts +++ b/web/components/routes/task/new-task-actions.ts @@ -48,9 +48,8 @@ export const useTaskActions = () => { try { me.root.tasks.splice(index, 1) - toast.success("Task deleted", { - position: "bottom-right", - description: `${task.title} has been deleted.` + toast.success("Task completed", { + position: "bottom-right" }) } catch (error) { console.error("Failed to delete task", error) diff --git a/web/components/ui/date-picker.tsx b/web/components/ui/date-picker.tsx index 6885577d..ce802de5 100644 --- a/web/components/ui/date-picker.tsx +++ b/web/components/ui/date-picker.tsx @@ -13,8 +13,15 @@ interface DatePickerProps { } export function DatePicker({ date, onDateChange, className }: DatePickerProps) { + const [open, setOpen] = React.useState(false) + + const selectDate = (selectedDate: Date | undefined) => { + onDateChange(selectedDate) + setOpen(false) // Закрываем Popover после выбора даты + } + return ( - +