add dedicated code to call work with the search of events

This commit is contained in:
2025-11-30 16:17:21 +01:00
parent adcd0933d2
commit caf990f700
4 changed files with 56 additions and 27 deletions
+34 -8
View File
@@ -4,11 +4,14 @@ import {Link} from "react-router";
import styles from "./EventsPage.module.css";
import Filter from "../../components/Filter/Filter.jsx";
import SearchBar from "../../components/SearchBar/SearchBar.jsx";
import searchEvents from "../../utils/searchEvents.js"
function EventsPage(){
const [isFilterVisible, setIsFilterVisible] = useState(false);
const [isSearchVisible, setIsSearchVisible] = useState(false);
const [searchQuery, setSearchQuery] = useState('');
const [searchResults, setSearchResults] = useState([]);
const toggleFilters = () => {
setIsFilterVisible(prev => !prev);
};
@@ -18,17 +21,34 @@ function EventsPage(){
yearOrder: "asc",
});
useEffect(() => {
if (isSearchVisible) {
document.getElementById("root").style.overflow = 'hidden';
} else {
document.getElementById("root").style.overflow = '';
}
const performSearch = async (query) => {
if (query.trim() === '') {
setSearchResults([]);
return;
}
const data = await searchEvents(query);
if (data) {
setSearchResults(data);
} else {
setSearchResults([]);
}
};
const handler = setTimeout(() => {
performSearch(searchQuery);
}, 300);
return () => {
document.getElementById("root").style.overflow = '';
clearTimeout(handler);
};
}, [isSearchVisible]);
}, [searchQuery]);
const [events] = useState([
{
@@ -239,7 +259,13 @@ function EventsPage(){
{isSearchVisible ? (
<div className={styles.searchBarContainer}>
<div className={styles.searchBarOverlay} onClick={() => setIsSearchVisible(false)}></div>
<SearchBar/>
<SearchBar
searchQuery={searchQuery}
setSearchQuery={setSearchQuery}
/>
{searchResults.map((event, index) => (
<Event key={index} event={event} />
))}
</div>
) : null}
-2
View File
@@ -41,8 +41,6 @@
width: 100%;
height: 100%;
z-index: 100;
background-color: rgba(0, 0, 0, 0.3);
backdrop-filter: blur(4px);
}