From 9071da494c9a5477b9d8fb4ab6250f0f7ddbb7c5 Mon Sep 17 00:00:00 2001 From: Shay Patel Date: Sat, 26 Oct 2024 21:15:16 +0100 Subject: [PATCH] Load search query from URL parameter --- app/events/page.tsx | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/app/events/page.tsx b/app/events/page.tsx index 75825ca..11473a2 100644 --- a/app/events/page.tsx +++ b/app/events/page.tsx @@ -1,5 +1,5 @@ 'use client'; -import React, { useEffect, useState, useRef } from 'react'; +import React, { useEffect, useState, useRef, Suspense } from 'react'; import Header from '../../components/custom/header'; import Footer from '../../components/custom/footer'; import { useSearchParams } from 'next/navigation'; @@ -63,7 +63,7 @@ const fetchEvents = (): Event[] => { const EventsPage: React.FC = () => { const [events, setEvents] = useState([]); const [filteredEvents, setFilteredEvents] = useState([]); - const [searchQuery, setSearchQuery] = useState(''); + const [searchQuery, setSearchQuery] = useState(""); const [hoveredEventId, setHoveredEventId] = useState(null); const [sortOption, setSortOption] = useState(''); // Track sorting option const [filterOptions, setFilterOptions] = useState([]); // Track applied filters @@ -71,8 +71,6 @@ const EventsPage: React.FC = () => { const [showSortMenu, setShowSortMenu] = useState(false); const [showFilterMenu, setShowFilterMenu] = useState(false); - const searchParams = useSearchParams(); - const sortRef = useRef(null); const filterRef = useRef(null); @@ -82,6 +80,17 @@ const EventsPage: React.FC = () => { setFilteredEvents(eventsData); }, []); + const SearchBox = () => { + setSearchQuery(useSearchParams().get("q") || ""); + return setSearchQuery(e.target.value)} + className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" + /> + }; + useEffect(() => { let filtered = events.filter((event) => ['name', 'date', 'location', 'description', 'host'].some((key) => @@ -143,13 +152,10 @@ const EventsPage: React.FC = () => { useEffect(() => { document.addEventListener('mousedown', handleClickOutside); - if (searchParams.get("q")) { - setSearchQuery(searchParams.get("q")!); - }; return () => { document.removeEventListener('mousedown', handleClickOutside); }; - }, [searchParams]); + }, []); return (
@@ -167,13 +173,18 @@ const EventsPage: React.FC = () => {
- setSearchQuery(e.target.value)} - className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" - /> + setSearchQuery(e.target.value)} + className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" + /> + }> + +
{/* Sort Button and Dropdown */}