PageSourceSearch

https://www.roomlala.ca/assets/module/Header-57aeb477e0d30d6f7f64bb9bfc13529e.js

js roomlala.ca collected 2026-10-06 07:25:29 UTC 3,072 bytes, 76 lines download raw bytes

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.