import { useEffect } from 'react'; import { Page, Block, Form, Input, Textarea, Select, Boolean, Calendar, PhotosUploader, Button } from '@cap-rel/smartcommon'; import { useApi, useNavigation, useStates } from '@cap-rel/smartcommon'; export const ProductFormPage = ({ productId }) => { const api = useApi(); const navigate = useNavigation(); const isEdit = !!productId; const st = useStates({ initialStates: { product: null, categories: [], loading: isEdit, submitting: false } }); // Charger les catégories useEffect(() => { api.private.get('categories').json().then(data => { st.set('categories', data.map(c => ({ value: c.id, label: c.name }))); }); }, []); // Charger le produit si édition useEffect(() => { if (isEdit) { api.private.get(`products/${productId}`).json().then(data => { st.set('product', data); st.set('loading', false); }); } }, [productId]); const handleSubmit = async (values) => { st.set('submitting', true); try { if (isEdit) { await api.private.put(`products/${productId}`, { json: values }); } else { await api.private.post('products', { json: values }); } navigate('/products'); } catch (err) { alert('Erreur : ' + err.message); } finally { st.set('submitting', false); } }; if (st.get('loading')) { return ; } return (
{/* Informations de base */}