mirror of
https://github.com/PR0M3TH3AN/VoxVera.git
synced 2026-10-27 09:40:40 +00:00
added language selector
This commit is contained in:
1 parent
46fa306c31
commit
0f94d640ac
3 files changed
+33
-12
No files matched your search
@@ -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>
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user