File size: 2,334 Bytes
caae15f
 
 
 
b4297ca
 
4071fe2
 
caae15f
 
 
 
7d9d30d
fdaf912
 
caae15f
 
 
7d9d30d
caae15f
 
 
 
7d9d30d
fdaf912
caae15f
 
 
 
4071fe2
fdaf912
b4297ca
 
fdaf912
 
b4297ca
 
 
 
 
 
 
fdaf912
 
b4297ca
 
 
 
 
fdaf912
b4297ca
 
 
 
 
 
 
 
 
 
fdaf912
 
 
 
b4297ca
 
caae15f
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// SearchSection.tsx
"use client";

import { useState, ChangeEvent, FormEvent } from "react";
import { AutofillSearchQuery } from "@/app/components/ui/autofill-prompt";
import { SearchSelection, useSearch, SearchResults, SearchInput } from "./ui/search";
import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';

const SearchSection: React.FC = () => {
  const [query, setQuery] = useState("");
  const { searchResults, isLoading, handleSearch } = useSearch();
  const [searchButtonPressed, setSearchButtonPressed] = useState(false);
  const [collSelectedId, setCollSelectedId] = useState<string>('');
  const [collSelectedName, setCollSelectedName] = useState<string>('');

  const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {
    setQuery(e.target.value);
    setSearchButtonPressed(false);
  };

  const handleSearchSubmit = (e: FormEvent) => {
    e.preventDefault();
    setSearchButtonPressed(true);
    handleSearch(query, collSelectedId);
  };

  return (
    <div className="space-y-4 max-w-5xl w-full">
                  <ToastContainer />
      {collSelectedId ? (
        <>
          <SearchInput
            collSelectedId={collSelectedId}
            collSelectedName={collSelectedName}
            query={query}
            isLoading={isLoading}
            results={searchResults}
            onInputChange={handleInputChange}
            onSearchSubmit={handleSearchSubmit}
          />
          <AutofillSearchQuery
            collSelectedId={collSelectedId}
            collSelectedName={collSelectedName}
            query={query}
            isLoading={isLoading}
            results={searchResults}
            onInputChange={handleInputChange}
            onSearchSubmit={handleSearchSubmit}
            handleCollIdSelect={setCollSelectedId}
          />
          <SearchResults
            query={query}
            results={searchResults}
            isLoading={isLoading}
            searchButtonPressed={searchButtonPressed}
          />
        </>
      ) : (
        <SearchSelection
          collSelectedId={collSelectedId}
          collSelectedName={collSelectedName}
          handleCollIdSelect={setCollSelectedId}
          handleCollNameSelect={setCollSelectedName}
        />
      )}
    </div>
  );
};

export default SearchSection;