Skip to content

Commit de18ca5

Browse files
committed
fix(ui): render header as function to fix language change
1 parent 2ad9a54 commit de18ca5

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

src/ui.ts

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,23 @@ function generateSectionsHTML(): string {
275275
`;
276276
}
277277

278+
function generateHeaderHTML(): string {
279+
return `
280+
<div class="qs-header">
281+
<div class="qs-header-title">
282+
<div class="qs-header-icon">${getIconMarkup("queue", 20)}</div>
283+
<span class="qs-header-badges">${renderBadge(`v${APP_VERSION}`, "version")}${APP_CHANNEL ? renderBadge(APP_CHANNEL.toUpperCase(), "channel") : ""}</span>
284+
</div>
285+
<div class="qs-header-actions">
286+
${renderButton(t('ui.buttons.refresh'), "repeat", { id: "qs-refresh", tone: "subtle" })}
287+
${renderButton(t('ui.buttons.exportSettings'), "download", { id: "qs-export-settings", title: t('ui.labels.exportSettings') })}
288+
${renderButton(t('ui.buttons.importSnapshots'), "chart-up", { id: "qs-import-snapshots", title: t('ui.labels.importSnapshots') })}
289+
${renderButton(t('ui.buttons.importSettings'), "chart-up", { id: "qs-import-settings", title: t('ui.labels.importSettings') })}
290+
</div>
291+
</div>
292+
`;
293+
}
294+
278295
function generateSettingsHTML(s: Settings): string {
279296
const collapsedClass = s.settingsCollapsed ? "collapsed" : "";
280297
const toggleIcon = "chevron-right";
@@ -353,6 +370,13 @@ function generateSettingsHTML(s: Settings): string {
353370
`;
354371
}
355372

373+
export function renderHeader(): void {
374+
const headerEl = document.querySelector(".qs-header");
375+
if (headerEl) {
376+
headerEl.outerHTML = generateHeaderHTML();
377+
}
378+
}
379+
356380
export function renderSettings(ui: UIHandlers) {
357381
const settingsEl = document.querySelector(".qs-settings");
358382
if (settingsEl) {
@@ -361,26 +385,14 @@ export function renderSettings(ui: UIHandlers) {
361385
}
362386

363387
export function openManagerModal(ui: UIHandlers): void {
364-
const versionBadge = renderBadge(`v${APP_VERSION}`, "version");
365-
const channelBadge = APP_CHANNEL ? renderBadge(APP_CHANNEL.toUpperCase(), "channel") : "";
366388
const sections = generateSectionsHTML();
367389
const s = ui.getSettings();
368390
const settingsHTML = generateSettingsHTML(s);
391+
const headerHTML = generateHeaderHTML();
369392

370393
const body = `
371394
<div class="qs-container">
372-
<div class="qs-header">
373-
<div class="qs-header-title">
374-
<div class="qs-header-icon">${getIconMarkup("queue", 20)}</div>
375-
<span class="qs-header-badges">${versionBadge}${channelBadge}</span>
376-
</div>
377-
<div class="qs-header-actions">
378-
${renderButton(t('ui.buttons.refresh'), "repeat", { id: "qs-refresh", tone: "subtle" })}
379-
${renderButton(t('ui.buttons.exportSettings'), "download", { id: "qs-export-settings", title: t('ui.labels.exportSettings') })}
380-
${renderButton(t('ui.buttons.importSnapshots'), "chart-up", { id: "qs-import-snapshots", title: t('ui.labels.importSnapshots') })}
381-
${renderButton(t('ui.buttons.importSettings'), "chart-up", { id: "qs-import-settings", title: t('ui.labels.importSettings') })}
382-
</div>
383-
</div>
395+
${headerHTML}
384396
${settingsHTML}
385397
<div id="qs-list">
386398
${sections || `<div style="opacity:0.7">${t('ui.empty.noSnapshots')}</div>`}
@@ -484,6 +496,7 @@ export function openManagerModal(ui: UIHandlers): void {
484496
}
485497
if (clickedButton?.id === "qs-refresh") {
486498
e.preventDefault();
499+
renderHeader();
487500
renderSettings(ui);
488501
renderList();
489502
return;
@@ -732,6 +745,7 @@ export function openManagerModal(ui: UIHandlers): void {
732745
const newSettings: Settings = { ...s0, language };
733746
ui.setSettings(newSettings);
734747
refreshLocale();
748+
renderHeader();
735749
renderSettings(ui);
736750
renderList();
737751
return;

0 commit comments

Comments
 (0)