From 0f94d640acc2e9c49c463c5b9c85037cc22c22fe Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Thu, 4 Jun 2026 22:30:50 -0400 Subject: [PATCH] added language selector --- site/nostr/index.html | 1 + site/nostr/nostr-client.css | 11 +++++++++++ site/nostr/nostr-client.js | 33 +++++++++++++++++++++------------ 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/site/nostr/index.html b/site/nostr/index.html index 0dadd36..901a98e 100644 --- a/site/nostr/index.html +++ b/site/nostr/index.html @@ -22,6 +22,7 @@ +
diff --git a/site/nostr/nostr-client.css b/site/nostr/nostr-client.css index affb420..881c379 100644 --- a/site/nostr/nostr-client.css +++ b/site/nostr/nostr-client.css @@ -572,6 +572,7 @@ body.mode-viewer .viewer-floating { right: 12px; z-index: 20; display: flex; + align-items: center; gap: 8px; } @@ -581,6 +582,15 @@ body.mode-viewer .viewer-floating button { font-size: 12px; } +body.mode-viewer .viewer-floating select { + width: auto; + min-height: 34px; + max-width: 180px; + padding: 6px 8px; + font-size: 12px; + background: #fff; +} + body.mode-viewer #viewer-panel { display: none; } @@ -657,6 +667,7 @@ body.mode-viewer #viewer-panel.drawer-open .result-panel { #open-viewer-controls, #viewer-print, #viewer-editor, + #viewer-lang, body > main > .panel, .preview-toolbar, .viewer-drawer { diff --git a/site/nostr/nostr-client.js b/site/nostr/nostr-client.js index ad190b8..a5871f3 100644 --- a/site/nostr/nostr-client.js +++ b/site/nostr/nostr-client.js @@ -123,21 +123,23 @@ Join us in a revolution that values truth and transparency. Together, we can bui } function populateLanguageOptions() { - const select = el("field-lang"); - if (!select) return; const langEntries = Object.entries(LOCALES).sort((a, b) => { const aName = (a[1] && a[1].meta && a[1].meta.language_name) || a[0]; const bName = (b[1] && b[1].meta && b[1].meta.language_name) || b[0]; return aName.localeCompare(bName); }); - select.innerHTML = ""; - for (const [code, data] of langEntries) { - const option = document.createElement("option"); - option.value = code; - const meta = data.meta || {}; - option.textContent = `${meta.flag || ""} ${meta.language_name || code}`.trim(); - select.appendChild(option); - } + ["field-lang", "viewer-lang"].forEach((selectId) => { + const select = el(selectId); + if (!select) return; + select.innerHTML = ""; + for (const [code, data] of langEntries) { + const option = document.createElement("option"); + option.value = code; + const meta = data.meta || {}; + option.textContent = `${meta.flag || ""} ${meta.language_name || code}`.trim(); + select.appendChild(option); + } + }); } function syncUiLanguage(lang) { @@ -161,8 +163,10 @@ Join us in a revolution that values truth and transparency. Together, we can bui setButtonText("viewer-editor", translate("cli.manage_action_edit", selected) || BUTTON_LABELS["viewer-editor"]); setButtonText("close-viewer-controls", translate("cli.manage_action_back", selected) || BUTTON_LABELS["close-viewer-controls"]); - const select = el("field-lang"); - if (select) select.value = selected; + ["field-lang", "viewer-lang"].forEach((selectId) => { + const select = el(selectId); + if (select) select.value = selected; + }); } function setDefaultText(lang) { @@ -820,6 +824,11 @@ Join us in a revolution that values truth and transparency. Together, we can bui applyFlyerDefaults(lang); renderPreview(buildPayloadFromForm()); }); + el("viewer-lang").addEventListener("change", () => { + const lang = supportedLang(el("viewer-lang").value || FALLBACK_LANG); + applyFlyerDefaults(lang); + renderPreview(buildPayloadFromForm()); + }); el("open-viewer-controls").addEventListener("click", openViewerDrawer); el("close-viewer-controls").addEventListener("click", closeViewerDrawer);