import React, { useState, useEffect, useRef } from 'react'; import { FiSearch, FiX } from 'react-icons/fi'; import { searchMedia } from '../../services/pocketbaseService'; import SearchResults from './SearchResults'; const SearchBar = ({ onClose, mobileMode = false }) => { const [query, setQuery] = useState(''); const [results, setResults] = useState([]); const [isLoading, setIsLoading] = useState(false); const inputRef = useRef(null); // Фокус на инпут при монтировании useEffect(() => { const timer = setTimeout(() => { if (inputRef.current) { inputRef.current.focus(); } }, 100); return () => clearTimeout(timer); }, []); useEffect(() => { const delayDebounceFn = setTimeout(() => { if (query.length >= 2) { setIsLoading(true); searchMedia(query) .then((data) => { setResults(data); setIsLoading(false); }) .catch((error) => { console.error('Search error:', error); setIsLoading(false); }); } else { setResults([]); } }, 300); return () => clearTimeout(delayDebounceFn); }, [query]); const handleInputChange = (e) => { const value = e.target.value; // Если это первый символ, делаем его заглавным if (value.length === 1) { setQuery(value.toUpperCase()); } else { setQuery(value); } }; const handleResultClick = () => { onClose(); // Закрываем поиск при клике на результат }; return (