import React, {useState, useEffect, useRef} from 'react'; import {Button, ButtonGroup, Input} from 'reactstrap'; import {FaHeartCirclePlus, FaRegHeart, FaHeart, FaArrowTurnDown} from 'react-icons/fa6'; export function FavoriteBar({teams}) { const [favorite, setFavorite] = useState(null); const [isVisible, setIsVisible] = useState(false); const [isLoading, setIsLoading] = useState(true); const [isPulsing, setIsPulsing] = useState(false); const [searchQuery, setSearchQuery] = useState(''); const headingRef = useRef(null); const favoriteBarRef = useRef(null); useEffect(() => { const savedFavorite = localStorage.getItem('favoriteTeam'); if (savedFavorite) { const team = teams.find(team => team.id === parseInt(savedFavorite, 10)); if (team) { setFavorite(team); } } setIsLoading(false); }, [teams]); useEffect(() => { if (isVisible && favoriteBarRef.current) { favoriteBarRef.current.style.maxHeight = `${favoriteBarRef.current.scrollHeight}px`; } else if (favoriteBarRef.current) { favoriteBarRef.current.style.maxHeight = '0'; } }, [isVisible]); useEffect(() => { if (favoriteBarRef.current) { favoriteBarRef.current.style.maxHeight = `${favoriteBarRef.current.scrollHeight}px`; } }, [searchQuery]); const toggleFavorite = team => { if (favorite && favorite.id === team.id) { setFavorite(null); localStorage.removeItem('favoriteTeam'); } else { setFavorite(team); localStorage.setItem('favoriteTeam', team.id); setIsPulsing(true); headingRef.current.scrollIntoView({behavior: 'smooth', block: 'center'}); } setIsVisible(false); // Close the favorite menu }; const scrollToFavorite = () => { if (!favorite) { return; } const stageElements = document.querySelectorAll(`[id^='favorite-team-level-'][id$='-${favorite.id}']`); let lowestStageEl = null; let lowestStageNum = Infinity; stageElements.forEach(el => { const match = el.id.match(/^favorite-team-level-(\d+)-(\d+)$/); if (match) { const stage = parseInt(match[1]); if (stage < lowestStageNum) { lowestStageNum = stage; lowestStageEl = el; } } }); if (lowestStageEl) { lowestStageEl.scrollIntoView({behavior: 'smooth', block: 'end'}); } else { const groupEl = document.getElementById(`favorite-team-groupstage-${favorite.id}`); if (groupEl) { groupEl.scrollIntoView({behavior: 'smooth', block: 'end'}); } } setIsPulsing(false); }; if (isLoading) { return
Loading...
; } const sortedTeams = [...teams].sort((a, b) => a.name.localeCompare(b.name)); const filteredTeams = sortedTeams.filter(team => team.name.toLowerCase().includes(searchQuery.toLowerCase())); return (

Favorit:

{favorite ? favorite.name : ''}

{favorite && ( )}
{sortedTeams.length > 5 && ( setSearchQuery(e.target.value)} className="mb-2" /> )}
{filteredTeams.map(team => (
{team.name}
))}
); }