From a0f5a2f1dea104f6667d0df60d5a5de5a28eda26 Mon Sep 17 00:00:00 2001 From: Tim Howitz Date: Fri, 6 Jun 2025 20:24:30 +0100 Subject: [PATCH] Added warehouse EditModal image edit overlay --- src/app/warehouse/page.tsx | 50 ++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/src/app/warehouse/page.tsx b/src/app/warehouse/page.tsx index 3130cc4..78e86d1 100644 --- a/src/app/warehouse/page.tsx +++ b/src/app/warehouse/page.tsx @@ -1,5 +1,6 @@ "use client"; import Image from "next/image"; +import { useRef } from "react"; import axios from "axios"; import useSWR from "swr"; import { Dispatch, SetStateAction, useMemo, useState } from "react"; @@ -373,8 +374,10 @@ function EditModal({ artefact, onClose }: { artefact: ExtendedArtefact; onClose: const [isSold, setIsSold] = useState(artefact.isSold); const [isCollected, setIsCollected] = useState(artefact.isCollected); const [image, setImage] = useState(null); + const [previewImage, setPreviewImage] = useState(null); const [error, setError] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); + const fileInputRef = useRef(null); function handleOverlayClick(e: { target: any; currentTarget: any }) { if (e.target === e.currentTarget) { @@ -432,9 +435,22 @@ function EditModal({ artefact, onClose }: { artefact: ExtendedArtefact; onClose: return; } setImage(file); + setPreviewImage(URL.createObjectURL(file)); } } + function handleRemoveImage() { + setImage(null); + setPreviewImage(null); + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + } + + function handleEditClick() { + fileInputRef.current?.click(); + } + return (
Edit Artefact {error &&

{error}

}
- {artefact.imageName && ( -
- Artefact + {(artefact.imageName || previewImage) && ( +
+
+ Artefact +
+ {previewImage ? ( + + ) : ( + + )} +
+
)}
@@ -460,9 +489,10 @@ function EditModal({ artefact, onClose }: { artefact: ExtendedArtefact; onClose: type="file" accept="image/jpeg,image/png" onChange={handleImageChange} - className="w-full p-1 border border-neutral-300 rounded-md placeholder-neutral-400 focus:ring-2 focus:ring-blue-500" + className="hidden" aria-label="Artefact Image" disabled={isSubmitting} + ref={fileInputRef} />

Created At: {new Date(artefact.createdAt).toLocaleDateString("en-GB")}