// components/pages/private/TaskFormPage/index.jsx import { useEffect } from 'react'; import { useParams } from 'react-router-dom'; import { Page, Block, Form, Input, Textarea, Select, Calendar, Button, Spinner } from '@cap-rel/smartcommon'; import { useApi, useStates, useNavigation, useForm } from '@cap-rel/smartcommon'; export const TaskFormPage = () => { const { id } = useParams(); const isEdit = !!id; const api = useApi(); const nav = useNavigation(); const st = useStates({ initialStates: { loading: isEdit, submitting: false, defaultValues: null } }); useEffect(() => { if (isEdit) { loadTask(); } }, [id]); const loadTask = async () => { try { const data = await api.private.get(`tasks/${id}`).json(); st.set('defaultValues', { label: data.label, description: data.description || '', priority: data.priority || 0, date_start: data.date_start || '', date_end: data.date_end || '' }); } catch (err) { alert('Erreur: ' + err.message); nav.navigate('/'); } finally { st.set('loading', false); } }; const handleSubmit = async (values) => { st.set('submitting', true); try { if (isEdit) { await api.private.put(`tasks/${id}`, { json: values }); } else { await api.private.post('tasks', { json: values }); } nav.navigate('/'); } catch (err) { alert('Erreur: ' + err.message); } finally { st.set('submitting', false); } }; if (st.get('loading')) { return ; } return (