import React, { useState, useRef } from 'react'; import { CloudUpload } from 'lucide-react'; import logger from '@/utils/logger'; export default function FileUpload({ selectionMessage, onFileSelect, uploadedFileName, existingFile, required, errorMsg, enable = true, // Nouvelle prop pour activer/désactiver le champ }) { const [localFileName, setLocalFileName] = useState(uploadedFileName || ''); const fileInputRef = useRef(null); const handleFileChange = (e) => { const file = e.target.files[0]; if (file) { setLocalFileName(file.name); logger.debug('Fichier sélectionné:', file.name); onFileSelect(file); } }; const handleFileDrop = (e) => { e.preventDefault(); if (!enable) return; // Empêcher le dépôt si désactivé const file = e.dataTransfer.files[0]; if (file) { setLocalFileName(file.name); logger.debug('Fichier déposé:', file.name); onFileSelect(file); } }; return (

{`${selectionMessage}`} {required && *}

enable && fileInputRef.current.click()} // Désactiver le clic si `enable` est false onDragOver={(e) => enable && e.preventDefault()} onDrop={handleFileDrop} >
{/* Affichage du fichier existant */} {existingFile && !localFileName && (

{typeof existingFile === 'string' ? existingFile.split('/').pop() // Si c'est une chaîne, utilisez split : existingFile?.name || 'Nom de fichier inconnu'}{' '}

)} {/* Affichage du fichier sélectionné */} {localFileName && (

{localFileName}

)} {/* Message d'erreur */} {errorMsg &&

{errorMsg}

}
); }