import { useEffect, useState } from 'react'; import { ConfirmDialog } from '../shared/ui/ConfirmDialog.jsx'; import { createEducationForm, deleteEducationForm, fetchEducationForms } from './settings-service.js'; export function EduFormsTab() { const [forms, setForms] = useState(null); const [loadError, setLoadError] = useState(false); const [name, setName] = useState(''); const [alert, setAlert] = useState({ text: '', isError: false }); const [deleting, setDeleting] = useState(null); useEffect(() => { let active = true; (async () => { try { const loaded = await fetchEducationForms(); if (!active) return; setForms(loaded); setLoadError(false); } catch { if (active) setLoadError(true); } })(); return () => { active = false; }; }, []); async function reload() { try { setForms(await fetchEducationForms()); setLoadError(false); } catch { setLoadError(true); } } async function submit(event) { event.preventDefault(); const trimmed = name.trim(); if (!trimmed) { setAlert({ text: 'Введите название', isError: true }); return; } try { const created = await createEducationForm(trimmed); setAlert({ text: `Форма «${created.name}» создана`, isError: false }); setName(''); await reload(); } catch (error) { setAlert({ text: error.message || 'Ошибка создания', isError: true }); } } async function confirmDelete() { const form = deleting; setDeleting(null); try { await deleteEducationForm(form.id); await reload(); } catch (error) { setAlert({ text: error.message || 'Не удалось удалить форму обучения', isError: true }); } } return ( <>

Новая форма обучения

setName(event.target.value)} />
{alert.text}

Все формы обучения

{loadError ? ( ) : forms === null ? ( ) : forms.length === 0 ? ( ) : forms.map(form => ( ))}
ID Название Действия
Ошибка загрузки
Загрузка...
Нет форм обучения
{form.id} {form.name}
{deleting && ( setDeleting(null)} onConfirm={() => void confirmDelete()} /> )} ); }