added language selector

This commit is contained in:
thePR0M3TH3AN committed 2026-06-04 22:30:50 -04:00
1 parent 46fa306c31
commit 0f94d640ac
3 files changed
+33 -12

No files matched your search

+1
View File
@@ -22,6 +22,7 @@
<button type="button" id="open-viewer-controls">Load Event</button>
<button type="button" id="viewer-print">Print</button>
<button type="button" id="viewer-editor">Editor</button>
<select id="viewer-lang" aria-label="Language"></select>
</div>
<main>
+11
View File
@@ -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 {
+21 -12
View File
@@ -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);