gemini/mcp/adk_multiagent_mcp_app/static/tabs.js (40 lines of code) (raw):

/** * Copyright 2025 Google LLC * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 **/ /** * @module tabs * Handles the tab switching functionality for the UI. */ /** * Initializes the tab switching behavior. * Looks for elements with class 'tab-button' and 'tab-panel'. * Buttons should have a 'data-tab' attribute matching the ID of the panel they control. */ export function initTabs() { const tabButtons = document.querySelectorAll(".tab-button"); const tabPanels = document.querySelectorAll(".tab-panel"); if (!tabButtons.length || !tabPanels.length) { console.warn( "Tab elements (buttons or panels) not found. Skipping tab initialization.", ); return; } tabButtons.forEach((button) => { button.addEventListener("click", () => { const targetPanelId = button.getAttribute("data-tab"); if (!targetPanelId) { console.error("Tab button is missing 'data-tab' attribute:", button); return; } const targetPanel = document.getElementById(targetPanelId); // Deactivate all buttons and panels tabButtons.forEach((btn) => btn.classList.remove("active")); tabPanels.forEach((panel) => panel.classList.remove("active")); // Activate the clicked button and corresponding panel button.classList.add("active"); if (targetPanel) { targetPanel.classList.add("active"); console.log(`Switched to tab: ${targetPanelId}`); } else { console.error(`Target panel with ID '${targetPanelId}' not found.`); } }); }); // Set the initial active tab (optional, based on HTML having 'active' class) const initialActiveButton = document.querySelector(".tab-button.active"); if (initialActiveButton) { const initialPanelId = initialActiveButton.getAttribute("data-tab"); const initialPanel = document.getElementById(initialPanelId); if (initialPanel) initialPanel.classList.add("active"); else console.warn(`Initial active panel '${initialPanelId}' not found.`); } else if (tabButtons.length > 0) { // Fallback: activate the first tab if none are marked active tabButtons[0].click(); console.log("No initial active tab set, activating the first one."); } console.log("Tab switching logic initialized."); }