1import EventListenerUtils from '../utils/event_listener_utils.js' 2import CookiesUtils from '../utils/CookiesUtils.js' 3import Assert from '../utils/Assert.js' 4 5export default class Header { 6 static headerNotConnected = null 7 8 static async init() { 9 const _header = document.getElementById('base-header') 10 if (!_header || _header.classList.contains('header-init')) { 11 return 12 } 13 _header.classList.add('header-init') 14 15 const searchMobHeaderInput = document.getElementById('searchMobHeaderInput') 16 const searchMobHeaderClose = document.getElementById('searchMobHeaderClose') 17 18 if (searchMobHeaderInput && searchMobHeaderClose) { 19 EventListenerUtils.onId('searchMobHeaderBtn', 'click', () => { 20 // FIXME : no style in js, use a css class 21 searchMobHeaderInput.style.display = 'none' 22 searchMobHeaderInput.classList.add('searchMobHeaderInputMobile') 23 searchMobHeaderClose.style.display = 'block' 24 }) 25 26 EventListenerUtils.onId('searchMobHeaderClose', 'click', () => { 27 searchMobHeaderInput.classList.remove('searchMobHeaderInputMobile') 28 // FIXME : no style in js, use a css class 29 searchMobHeaderClose.style.display = 'none' 30 }) 31 } 32 33 const notConnectedMobileBtn = document.getElementById('js-mobile-dropdown-btn') 34 if (notConnectedMobileBtn) { 35 notConnectedMobileBtn.classList.remove('invisible') // inp improvement 36 notConnectedMobileBtn.addEventListener('click', () => { 37 const menu = document.getElementById('js-not-connected-links') 38 if (menu.style.display === 'flex') { 39 menu.style.display = 'none' 40 } else { 41 menu.style.display = 'flex' 42 } 43 }) 44 } 45 46 Header.initEventListenerOnDropDownMenuButton() 47 48 if ('undefined' !== typeof window.APP_HEADER_V2) { 49 const moduleHeaderV2 = await import('./header-v2.js'); 50 this.headerV2 = moduleHeaderV2.default(); 51 this.headerV2.init() 52 } 53 54 if (!CookiesUtils.isConnected()) { 55 const module = await import('./HeaderNotConnected.js'); 56 this.headerNotConnected = module.default(); 57 this.headerNotConnected.init() 58 } 59 } 60 61 static async initEventListenerOnDropDownMenuButton() { 62 const connectedButton = document.getElementById('js-dropdown-btn') 63 if (connectedButton) { 64 connectedButton.classList.remove('invisible') // inp improvement 65 connectedButton.addEventListener('click', (event) => { 66 const parent = document.getElementById('connected-links-menu-container') 67 parent.classList.toggle('d-none') 68 }) 69 } 70 } 71 72 static requireHeaderNotConnected() { 73 Assert.notNull(this.headerNotConnected, 'headerNotConnected null') 74 return this.headerNotConnected 75 } 76}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.