ConceptPortal-public/rsconcept/frontend/src/app/MutationErrors.tsx

33 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-02-19 19:26:29 +03:00
import { useMutationErrors } from '@/backend/useMutationErrors';
import { Button } from '@/components/Control';
import { DescribeError } from '@/components/InfoError';
2025-03-10 16:02:53 +03:00
import { ModalBackdrop } from '@/components/Modal/ModalBackdrop';
2025-02-19 23:30:35 +03:00
import { useEscapeKey } from '@/hooks/useEscapeKey';
2025-02-19 19:26:29 +03:00
import { useDialogsStore } from '@/stores/dialogs';
export function MutationErrors() {
const { mutationErrors, resetErrors } = useMutationErrors();
const hideDialog = useDialogsStore(state => state.hideDialog);
useEscapeKey(resetErrors, mutationErrors.length > 0);
if (mutationErrors.length === 0) {
return null;
}
hideDialog();
return (
2025-03-10 16:02:53 +03:00
<div className='cc-modal-wrapper'>
<ModalBackdrop onHide={resetErrors} />
<div className='px-10 py-3 flex flex-col items-center border rounded-xl bg-prim-100' role='alertdialog'>
2025-02-19 19:26:29 +03:00
<h1 className='py-2 select-none'>Ошибка при обработке</h1>
2025-03-10 16:02:53 +03:00
<div className='px-3 flex flex-col text-warn-600 text-sm font-semibold select-text'>
2025-02-19 19:26:29 +03:00
<DescribeError error={mutationErrors[0]} />
</div>
<Button onClick={resetErrors} className='w-fit' text='Закрыть' />
</div>
</div>
);
}