Advertisement
thewitchking

Untitled

Jun 10th, 2025
590
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useRef, useEffect } from 'react';
  2. import { useLocation } from 'react-router-dom';
  3.  
  4. const SearchBar = () => {
  5.   const [isOpen, setIsOpen] = useState(false);
  6.   const searchRef = useRef(null);
  7.   const location = useLocation();
  8.  
  9.   const handleClickOutside = (event) => {
  10.     if (
  11.       searchRef.current &&
  12.       !searchRef.current.contains(event.target)
  13.     ) {
  14.       setIsOpen(false);
  15.     }
  16.   };
  17.  
  18.   useEffect(() => {
  19.     // Close dropdown on route change
  20.     setIsOpen(false);
  21.   }, [location]);
  22.  
  23.   useEffect(() => {
  24.     document.addEventListener('mousedown', handleClickOutside);
  25.  
  26.     return () => {
  27.       document.removeEventListener('mousedown', handleClickOutside);
  28.     };
  29.   }, []);
  30.  
  31.   return (
  32.     <div ref={searchRef} data-testid="search-div" className="search-container">
  33.       <input
  34.         data-testid="search-input"
  35.         onFocus={() => setIsOpen(true)}
  36.         placeholder="Search apartments..."
  37.       />
  38.       {isOpen && (
  39.         <div className="dropdown" data-testid="auth-dropdown-btn">
  40.           {/* Search results go here */}
  41.         </div>
  42.       )}
  43.     </div>
  44.   );
  45. };
  46.  
  47. export default SearchBar;
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement