fix: language selector now works on all pages

- Added 'navbarReady' event dispatch from navbar after rendering
- Language selector now waits for navbar container to exist
- Fixes race condition where language selector ran before navbar rendered
- Language toggle now functional on researcher, implementer, leader, about pages
This commit is contained in:
TheFlow 2025-10-29 15:41:17 +13:00
parent 8291734465
commit f4fa637635
2 changed files with 17 additions and 4 deletions

View file

@ -67,11 +67,21 @@
});
}
// Initialize when DOM is ready
// Initialize when navbar is ready (not just DOM ready)
function initWhenReady() {
// Check if navbar container exists
if (document.getElementById('language-selector-container')) {
createLanguageSelector();
} else {
// Wait for navbar to signal it's ready
window.addEventListener('navbarReady', createLanguageSelector, { once: true });
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', createLanguageSelector);
document.addEventListener('DOMContentLoaded', initWhenReady);
} else {
createLanguageSelector();
initWhenReady();
}
// Re-initialize when language changes (to update active state)

View file

@ -13,11 +13,14 @@ class TractatusNavbar {
this.render();
this.attachEventListeners();
this.setActivePageIndicator();
// Dispatch event to signal navbar is ready
window.dispatchEvent(new CustomEvent('navbarReady'));
}
render() {
const navHTML = `
<nav class="bg-white border-b border-gray-200 sticky top-0 z-50 shadow-sm">
<nav class="bg-white border-b border-gray-200 sticky top-0 z-50 shadow-sm" id="tractatus-navbar">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">