From b790a103c41e440320fae50529e6bf7e9440c763 Mon Sep 17 00:00:00 2001 From: Malaber Date: Fri, 14 Mar 2025 23:34:23 +0100 Subject: [PATCH] Scroll to lowest stage of team or group stage if none are available --- js/components/FavoriteBar.js | 33 +++++++++++++++++++++++++++------ js/components/MatchTable.js | 4 ++-- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/js/components/FavoriteBar.js b/js/components/FavoriteBar.js index 725dfcb..dfe8bd5 100644 --- a/js/components/FavoriteBar.js +++ b/js/components/FavoriteBar.js @@ -46,13 +46,34 @@ export function FavoriteBar({teams}) { }; const scrollToFavorite = () => { - if (favorite) { - const el = document.getElementById(`favorite-team-groupstage-${favorite.id}`); - if (el) { - el.scrollIntoView({behavior: 'smooth', block: 'end'}); - } - setIsPulsing(false); // Stop pulsing when the button is clicked + 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) { diff --git a/js/components/MatchTable.js b/js/components/MatchTable.js index dc21bb1..4b4a9a0 100644 --- a/js/components/MatchTable.js +++ b/js/components/MatchTable.js @@ -41,8 +41,8 @@ export function MatchTable(props) { ); } else { - const team1Id = `favorite-team-level-${props.stageLevel}-${props.match.team1.id}`; - const team2Id = `favorite-team-level-${props.stageLevel}-${props.match.team1.id}`; + const team1Id = props.stageLevel !== undefined ? `favorite-team-level-${props.stageLevel}-${props.match.team1.id}` : undefined; + const team2Id = props.stageLevel !== undefined ? `favorite-team-level-${props.stageLevel}-${props.match.team2.id}` : undefined; return (