import { CircleX, Edit, Save, Trash2 } from "lucide-react"; import { Form, useDelete, useNotify, useResourceContext, useUpdate, WithRecord, useTranslate, } from "ra-core"; import { useState } from "react"; import type { FieldValues, SubmitHandler } from "react-hook-form"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { ReferenceField } from "@/components/ds/admin/reference-field"; import { Button } from "@/components/ds/ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ds/ui/tooltip"; import { CompanyAvatar } from "../companies/CompanyAvatar"; import { Avatar } from "../contacts/Avatar"; import { RelativeDate } from "../misc/RelativeDate"; import { Status } from "../misc/Status"; import { SaleName } from "../sales/SaleName"; import type { ContactNote, DealNote } from "../types"; import { NoteAttachments } from "./NoteAttachments"; import { NoteInputs } from "./NoteInputs"; export const Note = ({ showStatus, note, }: { showStatus?: boolean; note: DealNote | ContactNote; isLast: boolean; }) => { const [isHover, setHover] = useState(false); const [isEditing, setEditing] = useState(false); const resource = useResourceContext(); const notify = useNotify(); const translate = useTranslate(); const [update, { isPending }] = useUpdate(); const [deleteNote] = useDelete( resource, { id: note.id, previousData: note }, { mutationMode: "undoable", onSuccess: () => { notify(translate("crm.activity.note_deleted"), { type: "info", undoable: true, }); }, }, ); const handleDelete = () => { deleteNote(); }; const handleEnterEditMode = () => { setEditing(!isEditing); }; const handleCancelEdit = () => { setEditing(false); setHover(false); }; const handleNoteUpdate: SubmitHandler = (values) => { update( resource, { id: note.id, data: values, previousData: note }, { onSuccess: () => { setEditing(false); setHover(false); }, }, ); }; return (
setHover(true)} onMouseLeave={() => setHover(false)} >
{resource === "contactNote" ? ( ) : ( )}
} /> {" "} {translate("crm.activity.added_note")}{" "} {showStatus && note.status && ( )}

{translate("crm.activity.edit_note")}

{translate("crm.activity.delete_note")}

{isEditing ? (
) : (
{note.text || ""} {note.attachments && }
)}
); };