import { FormContext } from '../context/form-context'; import type { FormComponentProps } from '../types'; import { ArrowDownTrayIcon } from '@heroicons/react/24/solid'; import { Heading, InputFile } from '@repo/ui'; import Link from 'next/link'; import { useContext, useEffect, useRef } from 'react'; type DownloadDocumentProps = Pick; function DownloadDocument({ document }: DownloadDocumentProps) { return document?.href ? (
Скачать
) : ( false ); } type FileProps = { readonly document: FormComponentProps['combinedDocuments'][number]; }; function File({ document }: FileProps) { const { formFiles, setFormFiles } = useContext(FormContext); const { canUpload, documentTypeId, name } = document; const handleFileChange = (event: React.ChangeEvent) => { if (event.target.files !== null) { const file = event.target.files.item(0); if (file) setFormFiles([ ...formFiles.filter((x) => x.documentTypeId !== documentTypeId), { documentTypeId, file, name }, ]); } }; const inputRef = useRef(null); useEffect(() => { const uploadableFile = formFiles.some((x) => x.documentTypeId === document.documentTypeId); if (!uploadableFile && inputRef.current) inputRef.current.value = ''; }, [document.documentTypeId, formFiles]); return (
); } export function Files({ combinedDocuments }: FormComponentProps) { return (
Документы
{combinedDocuments.map((document) => ( ))}
); }