import { useState, useEffect } from 'react'; import { createFormexMaterial, updateFormexMaterial } from '../api/client'; import styles from './MaterialModal.module.css'; export default function MaterialModal({ material, collections, onClose, onSave }) { const isEditing = !!material; const [formData, setFormData] = useState({ formex_code: '', name: '', collection: '', width_mm: '', height_mm: '', thickness_mm: '', diameter_mm: '', length_mm: '', bore_diameter_mm: '', bore_depth_base_mm: '', bore_depth_piece_mm: '', price_chf: '', price_unit: '', formex_url: '' }); const [error, setError] = useState(''); const [saving, setSaving] = useState(false); useEffect(() => { if (material) { setFormData({ formex_code: material.formex_code || '', name: material.name || '', collection: material.collection || '', width_mm: material.width_mm?.toString() || '', height_mm: material.height_mm?.toString() || '', thickness_mm: material.thickness_mm?.toString() || '', diameter_mm: material.diameter_mm?.toString() || '', length_mm: material.length_mm?.toString() || '', bore_diameter_mm: material.bore_diameter_mm?.toString() || '', bore_depth_base_mm: material.bore_depth_base_mm?.toString() || '', bore_depth_piece_mm: material.bore_depth_piece_mm?.toString() || '', price_chf: material.price_chf?.toString() || '', price_unit: material.price_unit || '', formex_url: material.formex_url || '' }); } }, [material]); const handleChange = (e) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSubmit = async (e) => { e.preventDefault(); setError(''); // Validation if (!formData.formex_code.trim() || !formData.name.trim() || !formData.collection.trim()) { setError('Le code, le nom et la collection sont requis.'); return; } setSaving(true); try { const payload = { formex_code: formData.formex_code.trim(), name: formData.name.trim(), collection: formData.collection.trim(), width_mm: formData.width_mm ? parseInt(formData.width_mm, 10) : null, height_mm: formData.height_mm ? parseInt(formData.height_mm, 10) : null, thickness_mm: formData.thickness_mm ? parseFloat(formData.thickness_mm) : null, diameter_mm: formData.diameter_mm ? parseFloat(formData.diameter_mm) : null, length_mm: formData.length_mm ? parseFloat(formData.length_mm) : null, bore_diameter_mm: formData.bore_diameter_mm ? parseFloat(formData.bore_diameter_mm) : null, bore_depth_base_mm: formData.bore_depth_base_mm ? parseFloat(formData.bore_depth_base_mm) : null, bore_depth_piece_mm: formData.bore_depth_piece_mm ? parseFloat(formData.bore_depth_piece_mm) : null, price_chf: formData.price_chf ? parseFloat(formData.price_chf) : null, price_unit: formData.price_unit.trim() || null, formex_url: formData.formex_url.trim() || null }; if (isEditing) { await updateFormexMaterial(material.id, payload); } else { await createFormexMaterial(payload); } onSave(); } catch (err) { setError(err.message); } finally { setSaving(false); } }; const handleOverlayClick = (e) => { if (e.target === e.currentTarget) { onClose(); } }; return (

{isEditing ? 'Modifier le matériau' : 'Nouveau matériau'}

{error &&

{error}

}
{collections.map((c) => (
Perçage
); }