import React, {useState, useRef, useEffect} from "react"; import styles from './SurveyInfo.module.css' import AddDescripImg from '../../assets/add_circle.svg?react'; import TextareaAutosize from 'react-textarea-autosize'; import {useLocation} from "react-router-dom"; interface SurveyInfoProps { titleSurvey: string; descriptionSurvey: string; setDescriptionSurvey?: (text: string) => void; setTitleSurvey?: (text: string) => void; createdAt?: Date; } const SurveyInfo: React.FC = ({titleSurvey, setDescriptionSurvey, descriptionSurvey, setTitleSurvey, createdAt = new Date()}) => { const [showDescriptionField, setShowDescriptionField] = useState(false); const [showNewTitleField, setShowNewTitleField] = useState(false); const titleTextareaRef = useRef(null); const descriptionTextareaRef = useRef(null); const location = useLocation(); const isCompleteSurveyActive = location.pathname === '/complete-survey'; const isSurveyViewPage = location.pathname.startsWith('/survey/') && !location.pathname.startsWith('/survey/create'); const handleDescriptionChange = (descripEvent: React.ChangeEvent) => { setDescriptionSurvey?.(descripEvent.target.value); }; const handleNewTitleChange = (titleEvent: React.ChangeEvent) => { setTitleSurvey?.(titleEvent.target.value); }; useEffect(() => { if (showNewTitleField && titleTextareaRef.current) { titleTextareaRef.current.focus(); } }, [showNewTitleField]); useEffect(() => { if (showDescriptionField && descriptionTextareaRef.current) { descriptionTextareaRef.current.focus(); } }, [showDescriptionField]); const handleAddNewTitleClick = () => { setShowNewTitleField(true); } const handleAddDescriptionClick = () => { setShowDescriptionField(true); } const handleTitleKeyDown = (titleClickEnter: React.KeyboardEvent) => { if (titleClickEnter.key === 'Enter'){ titleClickEnter.preventDefault(); setShowNewTitleField(false); } } const handleDescriptionKeyDown = (descripClickEnter: React.KeyboardEvent) => { if (descripClickEnter.key === 'Enter'){ descripClickEnter.preventDefault(); setShowDescriptionField(false); } } const handleParagraphClick = () => { setShowDescriptionField(true); } const handleTitleBlur = () => { setShowNewTitleField(false); }; const handleDescriptionBlur = () => { setShowDescriptionField(false); }; const addDate = () => { const year = createdAt.getFullYear(); const month = String(createdAt.getMonth() + 1).padStart(2, '0'); const day = String(createdAt.getDate()).padStart(2, '0'); return `${day}/${month}/${year}`; } const renderTitle = () => { if (isCompleteSurveyActive) { return ( ) } if (showNewTitleField) { return (

); } return ( ); }; const renderDescription = () => { if (isCompleteSurveyActive) { return descriptionSurvey ? (

{descriptionSurvey}

) : 'Описание'; } if (descriptionSurvey && !showDescriptionField) { return ( ); } else if (showDescriptionField) { return (
); } else { return ( ); } }; return (
{renderTitle()} {renderDescription()} {(isSurveyViewPage || isCompleteSurveyActive) && createdAt && (

Дата создания: {addDate()}

)}
); }; export default SurveyInfo;