From 534fc41d3379b9e5c774924d602adeb849f2f3a6 Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Wed, 4 Feb 2026 15:25:04 +0100 Subject: [PATCH] Shrink UI controls and iconize language/edit/delete --- wwwroot/app.js | 51 +++++++++++++++++++++++++++++++++++++++++----- wwwroot/index.html | 24 +++++++++++++--------- wwwroot/js/ui.js | 4 ++-- wwwroot/styles.css | 36 ++++++++++++++++++++++++++++---- 4 files changed, 94 insertions(+), 21 deletions(-) diff --git a/wwwroot/app.js b/wwwroot/app.js index 3757254..2613640 100644 --- a/wwwroot/app.js +++ b/wwwroot/app.js @@ -45,13 +45,10 @@ function setupHandlers() { loginUser.addEventListener("blur", () => { delete loginUser.dataset.userEditing; }); } - const langSelects = Array.from(document.querySelectorAll(".lang-select")); - const syncLanguageSelects = () => langSelects.forEach((sel) => (sel.value = getLanguage())); - syncLanguageSelects(); - langSelects.forEach((sel) => sel.addEventListener("change", () => setLanguage(sel.value))); + setupLanguageSwitchers(); onLanguageChange(() => { - syncLanguageSelects(); + updateLanguageButtons(); renderWelcome(); renderPhasePill(); renderCounts(); @@ -212,3 +209,47 @@ async function main() { } main(); + +function languageEmoji(lang) { + const map = { en: "🇬🇧", de: "🇩🇪" }; + return map[lang] || "🌐"; +} + +function updateLanguageButtons() { + document.querySelectorAll(".lang-button").forEach((btn) => { + btn.textContent = languageEmoji(getLanguage()); + btn.title = t("lang.label"); + btn.setAttribute("aria-label", t("lang.label")); + }); +} + +function setupLanguageSwitchers() { + const switches = document.querySelectorAll(".lang-switch"); + const closeAll = () => + switches.forEach((wrap) => wrap.querySelector(".lang-menu")?.classList.add("hidden")); + + switches.forEach((wrap) => { + const btn = wrap.querySelector(".lang-button"); + const menu = wrap.querySelector(".lang-menu"); + if (!btn || !menu) return; + btn.addEventListener("click", (e) => { + e.preventDefault(); + const isHidden = menu.classList.contains("hidden"); + closeAll(); + if (isHidden) menu.classList.remove("hidden"); + }); + menu.querySelectorAll("[data-lang]").forEach((item) => + item.addEventListener("click", () => { + const lang = item.dataset.lang; + if (lang) setLanguage(lang); + closeAll(); + }), + ); + }); + + document.addEventListener("click", (e) => { + if (!e.target.closest(".lang-switch")) closeAll(); + }); + + updateLanguageButtons(); +} diff --git a/wwwroot/index.html b/wwwroot/index.html index 1997845..4bb9d63 100644 --- a/wwwroot/index.html +++ b/wwwroot/index.html @@ -21,11 +21,13 @@

Log in

- Language - +
+ + +