import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; import { CloseCircle, Document, Link2, More } from "iconsax-react"; import { useEffect, useState, type FC } from "react"; import { createPortal } from "react-dom"; import { timeAgo } from "../../../../../config/func"; import { isImageAttachment } from "./isImageAttachment"; type Props = { title: string; createdAt?: string; type: "file" | "link"; url?: string; onEdit: () => void; onDelete: () => void; }; const AttachmentItem: FC = ({ title, createdAt, type, url, onEdit, onDelete }) => { const [isPreviewOpen, setIsPreviewOpen] = useState(false); const isImage = type === "file" && isImageAttachment(url); useEffect(() => { if (!isPreviewOpen) return; const handleKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") setIsPreviewOpen(false); }; document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); }, [isPreviewOpen]); return ( <>
{isImage && url ? ( ) : (
{type === "file" ? : }
)}
{isImage && url ? ( ) : url ? ( {title} ) : (
{title}
)} {createdAt &&
{timeAgo(createdAt)}
}
{({ close }) => ( <> )}
{isPreviewOpen && url && createPortal(
{title}
, document.body, )} ); }; export default AttachmentItem;