import {Box, TextField, Button, Typography, FormControl, InputLabel, Select, MenuItem} from '@mui/material' import {Edit} from '@refinedev/mui' import {useForm} from '@refinedev/react-hook-form' import {useState, useEffect} from 'react' import {useShow} from '@refinedev/core' import {MEDIA_TYPES} from '../../lib/constants' type MediaFormValues = { filename: string media_type: number file?: File } export const MediaEdit = () => { const { saveButtonProps, refineCore: {onFinish}, register, formState: {errors}, setValue, handleSubmit, } = useForm({ defaultValues: { filename: '', media_type: '', file: undefined, }, }) const {query} = useShow() const {data} = query const record = data?.data const [selectedFile, setSelectedFile] = useState(null) const [previewUrl, setPreviewUrl] = useState(null) useEffect(() => { if (record?.id) { setPreviewUrl(`https://wn.krbl.ru/media/${record.id}/download`) setValue('filename', record?.filename || '') setValue('media_type', record?.media_type) } }, [record, setValue]) const handleFileChange = (event: React.ChangeEvent) => { const file = event.target.files?.[0] if (file) { setValue('file', file) setSelectedFile(file) if (file.type.startsWith('image/')) { const url = URL.createObjectURL(file) setPreviewUrl(url) } } } return ( { const formData = { filename: data.filename, type: Number(data.media_type), } onFinish(formData) }), }} > {selectedFile && ( {selectedFile.name} )} {previewUrl && ( Preview )} Тип {errors.media_type && ( {(errors as any)?.message} )} ) }