diff --git a/inventory/src/lib/react-spreadsheet-import/src/steps/ImageUploadStep/ImageUploadStep.tsx b/inventory/src/lib/react-spreadsheet-import/src/steps/ImageUploadStep/ImageUploadStep.tsx index 505447b..27338fe 100644 --- a/inventory/src/lib/react-spreadsheet-import/src/steps/ImageUploadStep/ImageUploadStep.tsx +++ b/inventory/src/lib/react-spreadsheet-import/src/steps/ImageUploadStep/ImageUploadStep.tsx @@ -3,8 +3,6 @@ import { useRsi } from "../../hooks/useRsi"; import { Button } from "@/components/ui/button"; import { Loader2, Upload, Trash2, AlertCircle, GripVertical, Maximize2, X } from "lucide-react"; import { Card, CardContent } from "@/components/ui/card"; -import { Separator } from "@/components/ui/separator"; -import { ScrollArea } from "@/components/ui/scroll-area"; import { toast } from "sonner"; import { Input } from "@/components/ui/input"; import config from "@/config"; @@ -13,7 +11,6 @@ import { cn } from "@/lib/utils"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { DndContext, - closestCenter, KeyboardSensor, PointerSensor, useSensor, @@ -23,10 +20,7 @@ import { DragStartEvent, pointerWithin, rectIntersection, - getFirstCollision, - useDndMonitor, DragMoveEvent, - closestCorners, CollisionDetection, useDroppable } from '@dnd-kit/core'; @@ -35,7 +29,6 @@ import { SortableContext, sortableKeyboardCoordinates, useSortable, - rectSortingStrategy, horizontalListSortingStrategy } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; @@ -45,7 +38,7 @@ import { DialogTrigger, } from "@/components/ui/dialog"; -type Props = { +type Props = { data: any[]; file: File; onBack?: () => void; @@ -129,14 +122,13 @@ export const ImageUploadStep = ({ // Handle drag over to track which product container is being hovered const handleDragOver = (event: DragMoveEvent) => { - const { active, over } = event; + const { over } = event; if (!over) { setActiveDroppableId(null); return; } - const activeContainer = findContainer(active.id.toString()); let overContainer = null; // Check if we're over a product container directly @@ -224,7 +216,7 @@ export const ImageUploadStep = ({ setActiveDroppableId(`product-${index}`); }; - const handleNativeDragLeave = (e: DragEvent) => { + const handleNativeDragLeave = () => { // Remove highlight when drag leaves container.classList.remove('border-primary', 'bg-primary/5'); if (activeDroppableId === `product-${index}`) { @@ -414,7 +406,6 @@ export const ImageUploadStep = ({ newItems.push(...newFilteredItems); // Update the product data with the new image order - const updatedData = updateProductImageOrder(sourceProductIndex, newFilteredItems); return newItems; } @@ -436,7 +427,6 @@ export const ImageUploadStep = ({ newItems.push(...newFilteredItems); // Update the product data with the new image order - const updatedData = updateProductImageOrder(sourceProductIndex, newFilteredItems); return newItems; }); @@ -484,24 +474,6 @@ export const ImageUploadStep = ({ }; // Function to update product data with the new image order - const updateProductImageOrder = (productIndex: number, orderedImages: ProductImageSortable[]) => { - // Create a copy of the data - const newData = [...data]; - - // Get the current product - const product = newData[productIndex]; - - // Get the ordered URLs - const orderedUrls = orderedImages.map(img => img.imageUrl); - - // Update the product with the ordered URLs - product.image_url = orderedUrls.join(','); - - // Update the data - newData[productIndex] = product; - - return newData; - }; // Function to handle image upload const handleImageUpload = async (files: FileList | File[], productIndex: number) => { @@ -551,7 +523,6 @@ export const ImageUploadStep = ({ ); // Update the product data with the new image URL - const updatedData = addImageToProduct(productIndex, result.imageUrl); toast.success(`Image uploaded for ${data[productIndex].name || `Product #${productIndex + 1}`}`); } catch (error) { @@ -778,7 +749,6 @@ export const ImageUploadStep = ({ setProductImages(prev => prev.filter((_, idx) => idx !== imageIndex)); // Remove the image URL from the product data - const updatedData = removeImageFromProduct(image.productIndex, image.imageUrl); toast.success('Image removed successfully'); } catch (error) { @@ -883,7 +853,7 @@ export const ImageUploadStep = ({
@@ -909,7 +879,7 @@ export const ImageUploadStep = ({ {`Unassigned

{image.file.name}

@@ -943,7 +913,7 @@ export const ImageUploadStep = ({ - - -
- -
- {alt} -
-
- {alt || "Product Image"} -
-
-
-
- ); - }; // Sortable Image component with enhanced drag prevention const SortableImage = ({ image, productIndex, imgIndex }: { image: ProductImageSortable, productIndex: number, imgIndex: number }) => { @@ -1114,7 +1033,7 @@ export const ImageUploadStep = ({
{ @@ -1136,9 +1055,13 @@ export const ImageUploadStep = ({ className="h-full w-full object-cover select-none no-native-drag" draggable={false} /> +
+
+ +
{/* Fix zoom button with proper state management */} @@ -1162,7 +1085,7 @@ export const ImageUploadStep = ({