diff --git a/web/components/routes/task/TaskForm.tsx b/web/components/routes/task/TaskForm.tsx index 7304a12a..990170a7 100644 --- a/web/components/routes/task/TaskForm.tsx +++ b/web/components/routes/task/TaskForm.tsx @@ -6,6 +6,8 @@ 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" interface TaskFormProps {} @@ -17,8 +19,6 @@ export const TaskForm: React.FC = ({}) => { const handleSubmit = (e: React.FormEvent) => { e.preventDefault() - console.log(title.trim()) - console.log(me, "me") if (title.trim()) { if (me?.root?.tasks === undefined) { if (!me) return @@ -30,8 +30,8 @@ export const TaskForm: React.FC = ({}) => { title, description: "", status: "todo", - createdAt: new Date(), - updatedAt: new Date() + createdAt: new Date() + // updatedAt: new Date() }, { owner: me._owner } ) @@ -48,6 +48,8 @@ export const TaskForm: React.FC = ({}) => { const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Escape") { resetForm() + } else if (e.key === "Backspace" && title.trim() === "") { + resetForm() } } @@ -57,8 +59,10 @@ export const TaskForm: React.FC = ({}) => { } }, [inputVisible]) + const formattedDate = format(new Date(), "EEE, MMMM do, yyyy") + return ( -
+
{!inputVisible ? ( = ({}) => { exit={{ opacity: 0, width: 0 }} transition={{ duration: 0.3 }} > - @@ -76,24 +85,27 @@ export const TaskForm: React.FC = ({}) => { - setTitle(e.target.value)} - onKeyDown={handleKeyDown} - placeholder="Enter task title" - /> - +
+ {}} /> + setTitle(e.target.value)} + onKeyDown={handleKeyDown} + // placeholder="Task title" + /> +
+
+ {formattedDate} +
)}
diff --git a/web/components/routes/task/TaskItem.tsx b/web/components/routes/task/TaskItem.tsx index 38160141..e4fd058c 100644 --- a/web/components/routes/task/TaskItem.tsx +++ b/web/components/routes/task/TaskItem.tsx @@ -1,6 +1,6 @@ -import React from "react" import { Task } from "@/lib/schema/tasks" import { Checkbox } from "@/components/ui/checkbox" +import { format } from "date-fns" interface TaskItemProps { task: Task @@ -12,10 +12,15 @@ export const TaskItem: React.FC = ({ task, onUpdateTask }) => { onUpdateTask(task.id, { status: checked ? "done" : "todo" }) } + const formattedDate = format(new Date(task.createdAt), "EEE, MMMM do, yyyy") + return ( -
  • - - {task.title} +
  • +
    + +

    {task.title}

    +
    + {formattedDate}
  • ) } diff --git a/web/components/routes/task/TaskList.tsx b/web/components/routes/task/TaskList.tsx index 41e1e1d5..8478dae3 100644 --- a/web/components/routes/task/TaskList.tsx +++ b/web/components/routes/task/TaskList.tsx @@ -9,8 +9,15 @@ interface TaskListProps { export const TaskList: React.FC = ({ tasks, onUpdateTask }) => { return ( -
      - {tasks?.map(task => task?.id && )} +
        + {tasks?.map( + task => + task?.id && ( +
      • + +
      • + ) + )}
      ) } diff --git a/web/components/routes/task/TaskRoute.tsx b/web/components/routes/task/TaskRoute.tsx index 88cad071..a2efe5ec 100644 --- a/web/components/routes/task/TaskRoute.tsx +++ b/web/components/routes/task/TaskRoute.tsx @@ -4,6 +4,7 @@ import { useAccount } from "@/lib/providers/jazz-provider" import { Task } from "@/lib/schema/tasks" import { TaskList } from "./TaskList" import { TaskForm } from "./TaskForm" +import { LaIcon } from "@/components/custom/la-icon" export const TaskRoute: React.FC = () => { const { me } = useAccount({ root: { tasks: [] } }) @@ -21,7 +22,10 @@ export const TaskRoute: React.FC = () => { return (
      -

      Tasks

      +
      + +

      Current Tasks

      +
      diff --git a/web/lib/schema/tasks.ts b/web/lib/schema/tasks.ts index 31451616..f96b8df9 100644 --- a/web/lib/schema/tasks.ts +++ b/web/lib/schema/tasks.ts @@ -5,7 +5,7 @@ export class Task extends CoMap { description = co.optional.string status = co.literal("todo", "in_progress", "done") createdAt = co.encoded(Encoders.Date) - updatedAt = co.encoded(Encoders.Date) + // updatedAt = co.encoded(Encoders.Date) completedAt = co.optional.encoded(Encoders.Date) }