"use client"; import { useEffect, useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogClose, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { UploadCloud, X, Check } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import withReactContent from "sweetalert2-react-content"; import Swal from "sweetalert2"; import { useRouter } from "next/navigation"; interface EditBannerDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onSubmit?: (data: FormData) => void; bannerData?: { id: number; title: string; thumbnail_url?: string; order: number; }; } export function EditBannerDialog({ open, onOpenChange, bannerData, onSubmit, }: { open: boolean; onOpenChange: (value: boolean) => void; bannerData: any; onSubmit?: (data: FormData, id: number) => void; }) { const [title, setTitle] = useState(""); const [file, setFile] = useState(null); const [preview, setPreview] = useState(null); const [selectedOrder, setSelectedOrder] = useState(1); const router = useRouter(); const MySwal = withReactContent(Swal); useEffect(() => { if (bannerData) { setTitle(bannerData.title || ""); setPreview(bannerData.thumbnail_url || null); setSelectedOrder(bannerData.position ? Number(bannerData.position) : 1); } }, [bannerData]); const handleFileChange = (e: any) => { const selected = e.target.files[0]; if (selected) { setFile(selected); setPreview(URL.createObjectURL(selected)); } }; const handleRemoveFile = () => { setFile(null); setPreview(null); }; const successSubmit = () => { MySwal.fire({ title: "Berhasil diperbarui!", icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", }).then((result) => { if (result.isConfirmed) router.refresh(); }); }; const handleSubmit = async () => { if (!title || !selectedOrder || !bannerData?.id) return; const formData = new FormData(); formData.append("title", title); formData.append("position", selectedOrder.toString()); formData.append("description", "dummy description"); if (file) { formData.append("file", file); } try { await onSubmit?.(formData, bannerData.id); successSubmit(); onOpenChange(false); } catch (error) { console.error("Error submit:", error); } }; const orderOptions = [ { id: 1, label: "Pertama" }, { id: 2, label: "Kedua" }, { id: 3, label: "Ketiga" }, { id: 4, label: "Keempat" }, { id: 5, label: "Kelima" }, ]; return ( {/* Header */} Edit Banner {/* Body */}
{/* Judul Banner */}
setTitle(e.target.value)} placeholder="Masukkan judul banner" className="mt-1" />
{/* Upload File */}
{preview && (
Preview
)}
{/* Urutan Banner */}
{orderOptions.map((opt) => ( ))}
{/* Footer */}
); }