import React, { useState } from "react"; import NavBar from "./Navigation/NavBar"; import HeroImage from "./Navigation/HeroImage"; import Footer from "./Navigation/Footer"; import Product from "./Product"; import products from "../data/Allproducts.json"; import TopBanner from './Navigation/TopBanner'; import { faSearch } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import "bootstrap/dist/css/bootstrap.min.css"; import "../styles/SearchProducts.scss"; import loadingIcon from "../assets/images/dashboardloader3.gif"; import { useToasts } from "react-toast-notifications"; export default function SearchProducts() { const { addToast } = useToasts(); const [query, setQuery] = useState(""); const [loading, setLoading] = useState(false); const [searchresult, setsearchresult] = useState([]); const SearchProducts = (e) => { e.preventDefault(); if (query !== "") { setLoading(true); const results = products.filter((product) => product.productname.toLowerCase().includes(query.toLowerCase()) ); setsearchresult(results); setLoading(false); if (results.length < 1) { addToast( " No result found for the following product: " + query + ". Please provide a valid product name and try again.", { appearance: "error", autoDismiss: true } ); } } else { addToast("Please type something.", { appearance: "info", autoDismiss: true, }); } }; const handleSearchInput = (e) => { setQuery(e.target.value); setsearchresult([]); }; return ( <div> <TopBanner/> <NavBar /> <HeroImage /> <div className="row container-search-bar"> <div className="col-lg-12"> <h1> Search products. {query.length > 0 ? "Search query: " + query : ""} </h1> <div className="mb-3"> {loading && ( <img src={loadingIcon} alt="loading" className="loadingIcon" /> )} </div> <form onSubmit={SearchProducts}> <div className="input-group"> <input className="form-control form-control-lg shadow-none form-input-search-bar" type="text" placeholder="Search for any product" autoFocus name="query" value={query} onChange={handleSearchInput} /> <div className="input-group-append"> <button className="btn search-button shadow-none" type="submit"> <FontAwesomeIcon icon={faSearch} /> </button> </div> </div> </form> </div> </div> <div className="containet-search-product"> <div className="container-products"> <div className="row"> {searchresult.length >= 1 ? searchresult.map((product) => ( <Product data={product} key={product.id} /> )) : ""} </div> </div> </div> <Footer /> </div> ); }