onClick?.(manga.slug)}
+ onClick={handleClick}
>
![]()
{mangas.map((manga) => (
))}
diff --git a/assets/react/app/presentation/components/SearchBar/SearchBar.jsx b/assets/react/app/presentation/components/SearchBar/SearchBar.jsx
index d72a1f8..36ff23a 100644
--- a/assets/react/app/presentation/components/SearchBar/SearchBar.jsx
+++ b/assets/react/app/presentation/components/SearchBar/SearchBar.jsx
@@ -1,4 +1,5 @@
import React, { useState, useRef, useEffect } from 'react';
+import { useNavigate } from 'react-router-dom';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faSearch, faPlus } from '@fortawesome/free-solid-svg-icons';
import { ApiMangaRepository } from '../../../infrastructure/api/apiMangaRepository.js';
@@ -7,7 +8,8 @@ import { SearchMangas } from '../../../application/useCases/searchMangas.js';
const mangaRepository = new ApiMangaRepository();
const searchMangas = new SearchMangas(mangaRepository);
-export function SearchBar({ onMangaClick, onAddMangaClick }) {
+export function SearchBar() {
+ const navigate = useNavigate();
const [query, setQuery] = useState('');
const [results, setResults] = useState([]);
const [isOpen, setIsOpen] = useState(false);
@@ -50,6 +52,20 @@ export function SearchBar({ onMangaClick, onAddMangaClick }) {
return () => clearTimeout(timeoutId);
}, [query]);
+ const handleMangaClick = (slug) => {
+ navigate(`/manga/${slug}`);
+ setIsOpen(false);
+ setQuery('');
+ setHasSearched(false);
+ };
+
+ const handleAddMangaClick = () => {
+ navigate(`/add${query ? `?q=${encodeURIComponent(query)}` : ''}`);
+ setIsOpen(false);
+ setQuery('');
+ setHasSearched(false);
+ };
+
return (
@@ -82,12 +98,7 @@ export function SearchBar({ onMangaClick, onAddMangaClick }) {
{results.map((manga) => (