PageSourceSearch

https://bookingtravel.hotelsviva.com/headers/ssm/skin_custom/assets/magallanes_30556/js/main.js

js hotelsviva.com collected 2026-10-03 21:21:31 UTC 2,775 bytes, 72 lines download raw bytes

1{
2    const dropdowns = document.querySelectorAll('[data-component-scope="viva-custom"] .dropdown');
3
4    dropdowns.forEach((dropdown) => {
5        const toggle = dropdown.querySelector('.dropdown__toggle');
6
7        toggle?.addEventListener('click', (e) => {
8            e.preventDefault();
9
10            dropdown.toggleAttribute('data-dropdown-opened');
11        });
12    });
13
14    const submenus = document.querySelectorAll('[data-component-scope="viva-custom"] [data-primary-nav-submenu]');
15
16    submenus.forEach((submenu) => {
17        const toggle = submenu.querySelector('.primary-nav__link');
18
19        toggle?.addEventListener('click', (e) => {
20            e.preventDefault();
21
22            const status = submenu.getAttribute('data-primary-nav-submenu');
23
24            if (status === 'opened') {
25                submenu.setAttribute('data-primary-nav-submenu', '');
26            } else {
27                submenu.setAttribute('data-primary-nav-submenu', 'opened');
28            }
29        });
30    });
31
32    const header = document.querySelector('[data-component-scope="viva-custom"].header');
33    const primaryNav = document.querySelector('[data-component-scope="viva-custom"] .primary-nav');
34    const primaryNavToggle = document.querySelector('[data-component-scope="viva-custom"] .primary-nav__toggle');
35
36    primaryNavToggle?.addEventListener('click', (e) => {
37        e.preventDefault();
38
39        const status = header?.getAttribute('data-primary-nav-mobile');
40
41        if (status === 'opened') {
42            header?.setAttribute('data-primary-nav-mobile', 'closed');
43        } else {
44            header?.setAttribute('data-primary-nav-mobile', 'opened');
45        }
46    });
47
48    document.addEventListener('click', (e) => {
49        const dropdownToggleClosest = e.target.closest('[data-component-scope="viva-custom"] .dropdown__toggle');
50
51        dropdowns.forEach((dropdown) => {
52            if (dropdown.querySelector('.dropdown__toggle') !== dropdownToggleClosest) {
53                dropdown.removeAttribute('data-dropdown-opened');
54            }
55        });
56
57        const submenuClosest = e.target.closest('[data-component-scope="viva-custom"] [data-primary-nav-submenu]');
58
59        submenus.forEach((submenu) => {
60            if (submenu !== submenuClosest) {
61                submenu.setAttribute('data-primary-nav-submenu', '');
62            }
63        });
64
65        const primaryNavClosest = e.target.closest('[data-component-scope="viva-custom"] .primary-nav');
66        const primaryNavToggleClosest = e.target.closest('[data-component-scope="viva-custom"] .primary-nav__toggle');
67
68        if (primaryNav !== primaryNavClosest && primaryNavToggle !== primaryNavToggleClosest) {
69            header?.setAttribute('data-primary-nav-mobile', 'closed');
70        }
71    });
72}

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.