diff --git a/public/my_favorites.php b/public/my_favorites.php index d3401f4..9fa1cd1 100644 --- a/public/my_favorites.php +++ b/public/my_favorites.php @@ -2238,13 +2238,14 @@ $loggedIn = true; const locationsPanel = document.getElementById('favorites-panel-locations'); const searchPanel = document.getElementById('favorites-panel-search'); const trackedPanel = document.getElementById('favorites-panel-tracked'); - const groupCards = Array.from(document.querySelectorAll('[data-favorites-group]')); - if (tabButtons.length === 0 || tabPanels.length === 0 || !locationsPanel || !searchPanel || !trackedPanel) { return; } + let currentPanelId = 'favorites-panel-locations'; + function activateTab(panelId, focusButton = false) { + currentPanelId = panelId; tabButtons.forEach((button) => { const isActive = button.dataset.tabTarget === panelId; button.setAttribute('aria-selected', isActive ? 'true' : 'false'); @@ -2254,6 +2255,9 @@ $loggedIn = true; } }); + // Immer frisch abfragen, da HTMX OOB-Swaps die DOM-Elemente ersetzen. + const groupCards = Array.from(document.querySelectorAll('[data-favorites-group]')); + if (panelId === 'favorites-panel-locations') { locationsPanel.hidden = false; searchPanel.hidden = true; @@ -2300,6 +2304,12 @@ $loggedIn = true; activateTab(tabButtons[nextIndex].dataset.tabTarget, true); }); }); + + // Nach HTMX-OOB-Swap das aktive Tab erneut anwenden, + // da neu gerenderte Elemente kein hidden-Attribut haben. + document.body.addEventListener('htmx:afterSettle', function () { + activateTab(currentPanelId); + }); })(); (function () { @@ -2567,6 +2577,12 @@ document.querySelectorAll('.favorites-loading-form').forEach((form) => { } form.classList.remove('is-loading'); + + const hint = form.querySelector('[data-loading-hint]'); + if (hint) { + hint.hidden = true; + } + form.querySelectorAll('button').forEach((button) => { button.disabled = false; button.removeAttribute('aria-busy');