Spaces:
Paused
Paused
File size: 1,652 Bytes
4edc3e5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | // components/language-component.js - Language selection modal
import { StateManager } from '../services/state-manager.js';
import { TranslationService } from '../services/translation-service.js';
export const LanguageComponent = {
elements: {
frRadioBtn: null,
enRadioBtn: null,
continueLangBtn: null,
consentModal: null
},
/**
* Initialize the language component
*/
init() {
this.elements.frRadioBtn = document.getElementById('lang-fr');
this.elements.enRadioBtn = document.getElementById('lang-en');
this.elements.continueLangBtn = document.getElementById('lang-continue-btn');
this.elements.consentModal = document.getElementById('consent-modal');
this.attachEventListeners();
this.setInitialLanguage();
},
/**
* Attach event listeners
*/
attachEventListeners() {
this.elements.frRadioBtn.addEventListener('change', () => {
TranslationService.setLanguage(this.elements.frRadioBtn.value);
});
this.elements.enRadioBtn.addEventListener('change', () => {
TranslationService.setLanguage(this.elements.enRadioBtn.value);
});
this.elements.continueLangBtn.addEventListener('click', () => {
this.elements.consentModal.scrollIntoView({
behavior: 'smooth',
inline: 'start',
block: 'nearest'
});
});
},
/**
* Set initial language radio button state
*/
setInitialLanguage() {
if (StateManager.currentLang === 'en') {
this.elements.enRadioBtn.checked = true;
} else {
this.elements.frRadioBtn.checked = true;
}
}
}; |