"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, DialogClose } from "@/components/ui/dialog"; import { FileUp, Loader2, AlertCircle } from "lucide-react"; interface UploadFileBeasiswaMahasiswaProps { onUploadSuccess: () => void; } export default function UploadFileBeasiswaMahasiswa({ onUploadSuccess }: UploadFileBeasiswaMahasiswaProps) { const [file, setFile] = useState(null); const [isUploading, setIsUploading] = useState(false); const [isDialogOpen, setIsDialogOpen] = useState(false); const [error, setError] = useState(null); const handleFileChange = (e: React.ChangeEvent) => { const selectedFile = e.target.files?.[0]; setError(null); if (!selectedFile) { setFile(null); return; } // Check file type const fileType = selectedFile.type; const validTypes = [ 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'text/csv', 'application/csv', 'text/plain' ]; if (!validTypes.includes(fileType) && !selectedFile.name.endsWith('.xlsx') && !selectedFile.name.endsWith('.xls') && !selectedFile.name.endsWith('.csv')) { setError("Format file tidak valid. Harap unggah file Excel (.xlsx, .xls) atau CSV (.csv)"); setFile(null); return; } // Check file size (max 5MB) if (selectedFile.size > 5 * 1024 * 1024) { setError("Ukuran file terlalu besar. Maksimum 5MB"); setFile(null); return; } setFile(selectedFile); }; const handleUpload = async () => { if (!file) { setError("Pilih file terlebih dahulu"); return; } try { setIsUploading(true); setError(null); const formData = new FormData(); formData.append('file', file); const response = await fetch('/api/keloladata/data-beasiswa-mahasiswa/upload', { method: 'POST', body: formData, }); const result = await response.json(); if (!response.ok) { throw new Error(result.message || 'Terjadi kesalahan saat mengunggah file'); } setIsDialogOpen(false); setFile(null); onUploadSuccess(); } catch (err) { console.error('Error uploading file:', err); setError((err as Error).message || 'Terjadi kesalahan saat mengunggah file'); } finally { setIsUploading(false); } }; return ( Upload Data Beasiswa Mahasiswa

Upload file Excel (.xlsx, .xls) atau CSV (.csv)

{file && (

File terpilih: {file.name}

)}
{error && (
{error}
)}
); }