From 186ca2f16b38e3232799f52eb93451c7fabcc6d1 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sun, 16 Nov 2025 10:08:23 +0100 Subject: [PATCH] Fixed TaskEdit and DocView --- src/components/view/Doc.tsx | 44 ++++++++++++++++++++++++++++++-- src/components/view/TaskEdit.tsx | 27 +++++++++++++++++--- 2 files changed, 66 insertions(+), 5 deletions(-) diff --git a/src/components/view/Doc.tsx b/src/components/view/Doc.tsx index e54a803..593d91b 100644 --- a/src/components/view/Doc.tsx +++ b/src/components/view/Doc.tsx @@ -12,6 +12,46 @@ import Warning from "@editorjs/warning"; import InlineCode from "@editorjs/inline-code"; import { OutputData } from "@editorjs/editorjs"; +function toMarkdown(data: OutputData): string { + return data.blocks + .map((block) => { + switch (block.type) { + case "header": + return `${"#".repeat(block.data.level)} ${block.data.text}`; + + case "paragraph": + return `${block.data.text}\n`; + + case "list": + if (block.data.style === "ordered") { + return (block.data.items as Array<{ content: string }>) + .map((item, i) => `${i + 1}. ${item.content}`) + .join("\n"); + } else { + return (block.data.items as Array<{ content: string }>) + .map((item) => `- ${item.content}`) + .join("\n"); + } + + case "code": + return `\`\`\`\n${block.data.code}\n\`\`\``; + + case "quote": + return `> ${block.data.text}`; + + case "delimiter": + return `---`; + + case "image": + return `![${block.data.caption || ""}](${block.data.file.url})`; + + default: + return ""; + } + }) + .join("\n\n"); +} + export default function DocView({ doc, setDoc, @@ -47,7 +87,7 @@ export default function DocView({ data: doc, async onChange() { const savedData = await editor.save(); - console.log("Document data:", savedData); + console.log("Document data:", toMarkdown(savedData)); setDoc(savedData); }, }); @@ -59,5 +99,5 @@ export default function DocView({ }; }, []); - return
; + return
; } diff --git a/src/components/view/TaskEdit.tsx b/src/components/view/TaskEdit.tsx index 1bf2a27..debfa92 100644 --- a/src/components/view/TaskEdit.tsx +++ b/src/components/view/TaskEdit.tsx @@ -12,12 +12,19 @@ import { Task } from "@/lib/types"; import { Color, getColor } from "@/lib/ui/color"; import { DraggableProvided } from "@hello-pangea/dnd"; import { Button } from "../ui/button"; -import { Dialog, DialogContent, DialogTrigger } from "../ui/dialog"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTrigger, +} from "../ui/dialog"; import DocView from "./Doc"; import { useState } from "react"; import { OutputData } from "@editorjs/editorjs"; import { DialogTitle } from "@radix-ui/react-dialog"; import { ScrollArea } from "../ui/scroll-area"; +import { Badge } from "../ui/badge"; export default function TaskEdit({ task, @@ -80,10 +87,24 @@ export default function TaskEdit({ - + {task.title} - Notes + {task.description} + +
+ {task.tags?.map((tag, i) => ( + + {tag} + + ))} +
+
- +