PageSourceSearch

https://www.raiffeisen.hu/o/raiffeisen-bank-theme/js/components/Navigation.js?minifierType=js&t=1790855528265

js raiffeisen.hu collected 2026-10-01 11:54:36 UTC 36,268 bytes, 699 lines download raw bytes

1/*1786086074000*/
2"use strict";
3// raiffeisen navigation
4let raiffeisenMainNavigation = (() => {
5        const app = () => {
6            let adminMenu = document.querySelector(".control-menu-container");
7            let overlay = document.getElementById('rbhu-overlay');
8            let siteNavigationMenuItems = document.querySelector('.rbhu-site-navigation-menu-items');
9            let mainNavigationMenuItems = document.querySelector('.rbhu-main-navigation-menu-items');
10            let menuCloseButton = document.querySelectorAll('.rbhu-menu-close-button');
11            let currentSiteUrl = window.location.href;
12            let activatedMobileMenu = 0;
13            let activatedDesktopMenu = 0;
14            let isExactMatch = false;
15            let lastOpenedTrigger = null;
16
17            // Mobil menü
18            let mobileMenuBurgerButton = document.querySelector('.rbhu-main-navigation-menu-burger');
19            let mobileMenu = document.querySelector('.rbhu-main-navigation-mobile-menu-items');
20            let burgerIcon = document.querySelector('.rbhu-burger-trigger');
21            let dropdownMenuContainer;
22            let dropdownMenuItem;
23            if (siteNavigationMenuItems) {
24                dropdownMenuContainer = siteNavigationMenuItems.querySelector('.rbhu-site-navigation-menu-dropdown-container');
25            }
26            if (dropdownMenuContainer) {
27                dropdownMenuItem = dropdownMenuContainer.querySelectorAll('.rbhu-site-navigation-menu-dropdown');
28            }
29
30            adminStickyMenuHandle();
31            checkActiveSite();
32            handleOverlay();
33            handleMainMobileMenu();
34
35            window.closeAllMenus = function () {
36                closeSiteMobileMenu();
37                closeMainMenu();
38                closeMainMobileMenu();
39            }
40
41            function activateSiteMenuElements() {
42                //Site menu
43                const allSiteMenuItemContainers = siteNavigationMenuItems ? siteNavigationMenuItems.querySelectorAll('.rbhu-site-navigation-menu-item-container') : null;
44                const siteMenuDropdownContainer = siteNavigationMenuItems ? siteNavigationMenuItems.querySelector('.rbhu-site-navigation-menu-dropdown-container') : null;
45                const allSiteMenuDropdownContainers = siteMenuDropdownContainer ? siteMenuDropdownContainer.querySelectorAll('.rbhu-site-navigation-menu-dropdown') : null;
46                if (activatedDesktopMenu !== 1 && window.innerWidth > 980) {
47                    if (allSiteMenuItemContainers) {
48                        allSiteMenuItemContainers.forEach(menuItemContainer => {
49                            const siteNavigationMenuItem = menuItemContainer.querySelector('a.rbhu-site-navigation-menu-item');
50                            const siteNavigationMenuItemHref = siteNavigationMenuItem ? siteNavigationMenuItem.getAttribute('href') : null;
51                            if (compareWebSegmentsWithExactMatch(siteNavigationMenuItemHref, currentSiteUrl)) {
52                                siteNavigationMenuItem.classList.add('active');
53                                isExactMatch = true;
54                            }
55                        });
56                        if (!isExactMatch) {
57                            allSiteMenuItemContainers.forEach(menuItemContainer => {
58                                const siteNavigationMenuItem = menuItemContainer.querySelector('a.rbhu-site-navigation-menu-item');
59                                const siteNavigationMenuItemHref = siteNavigationMenuItem ? siteNavigationMenuItem.getAttribute('href') : null;
60                                if (compareWebSegments(siteNavigationMenuItemHref, currentSiteUrl)) {
61                                    siteNavigationMenuItem.classList.add('active');
62                                }
63                            });
64                        }
65                    }
66                } else if (activatedMobileMenu !== 1 && window.innerWidth <= 980) {
67                    if (allSiteMenuDropdownContainers) {
68                        allSiteMenuDropdownContainers.forEach(menuDropdownContainer => {
69                            const siteNavigationMenuItem = menuDropdownContainer.querySelector('a.rbhu-site-navigation-menu-item');
70                            const siteNavigationMenuItemHref = siteNavigationMenuItem ? siteNavigationMenuItem.getAttribute('href') : null;
71
72                            if (compareWebSegmentsWithExactMatch(siteNavigationMenuItemHref, currentSiteUrl)) {
73                                siteNavigationMenuItem.classList.add('active');
74                                isExactMatch = true;
75                            }
76                        });
77                        if (!isExactMatch) {
78                            allSiteMenuDropdownContainers.forEach(menuDropdownContainer => {
79                                const siteNavigationMenuItem = menuDropdownContainer.querySelector('a.rbhu-site-navigation-menu-item');
80                                const siteNavigationMenuItemHref = siteNavigationMenuItem ? siteNavigationMenuItem.getAttribute('href') : null;
81
82                                if (compareWebSegments(siteNavigationMenuItemHref, currentSiteUrl)) {
83                                    siteNavigationMenuItem.classList.add('active');
84                                }
85                            });
86                        }
87                    }
88                }
89            }
90
91            window.activateMobileMenuElements = () => {
92                //Mobile/tablet menu
93                const allMobileMenuContainer = mobileMenu ? mobileMenu.querySelectorAll('.rbhu-menu-container') : null;
94
95                if (allMobileMenuContainer) {
96                    allMobileMenuContainer.forEach(function (menuContainer) {
97                        const menuContainerLink = menuContainer.querySelector('a.rbhu-menu-item');
98                        const menuContainerLinkHref = menuContainerLink.getAttribute('href');
99
100                        if (isPathContainsLink(menuContainerLinkHref, currentSiteUrl)) {
101                            menuContainerLink.classList.add('selected')
102                        } else {
103                            const mobileNavigationContent = menuContainer ? menuContainer.querySelector('.rbhu-mobile-navigation-content') : null;
104                            const ulMenuBlock = mobileNavigationContent ? mobileNavigationContent.querySelector('ul.rbhu-menu-blocks') : null;
105                            const menuItemListElements = ulMenuBlock ? ulMenuBlock.querySelectorAll('li.rbhu-menu-item') : null;
106                            if (menuItemListElements) {
107                                menuItemListElements.forEach(menuItemListElement => {
108                                    const columnTitleLink = menuItemListElement.querySelector('a.rbhu-column-title');
109                                    const columnTitleLinkHref = columnTitleLink ? columnTitleLink.getAttribute('href') : null;
110                                    if (isPathContainsLink(columnTitleLinkHref, currentSiteUrl)) {
111                                        columnTitleLink.classList.add('selected');
112                                        menuItemListElement.classList.add('selected');
113                                        mobileNavigationContent.classList.add('show');
114                                        menuContainerLink.classList.add('visited');
115                                    } else {
116                                        const columnTitleUnlinkLinks = menuItemListElement.querySelectorAll('.openable');
117
118                                        columnTitleUnlinkLinks.forEach(function (columnTitleUnlinkLink) {
119                                            const blockContent = menuItemListElement.querySelector('.rbhu-block-content');
120                                            const level3MenuElementsBlock = blockContent ? blockContent.querySelector('.rbhu-level-3-menu-elements') : null;
121                                            const level3MenuElements = level3MenuElementsBlock ? level3MenuElementsBlock.querySelectorAll('.rbhu-level-3-menu-element') : null;
122                                            level3MenuElements.forEac
122h(function (level3MenuElement) {
123                                                const level3BlockContentLinks = level3MenuElement ? level3MenuElement.querySelectorAll('.rbhu-block-content-link') : null;
124                                                level3BlockContentLinks.forEach(function (level3BlockContentLink) {
125                                                    const level3BlockContentLinkHref = level3BlockContentLink ? level3BlockContentLink.getAttribute('href') : null;
126
127                                                    if (isPathContainsLink(level3BlockContentLinkHref, currentSiteUrl)) {
128                                                        level3BlockContentLink.classList.add('selected');
129                                                        columnTitleUnlinkLink.classList.add('visited');
130                                                        menuContainerLink.classList.add('visited');
131                                                        blockContent.classList.add('show');
132                                                        mobileNavigationContent.classList.add('show');
133                                                    }
134                                                });
135                                            });
136                                        });
137                                    }
138                                });
139                            }
140                        }
141                    });
142                }
143            }
144
145            window.activateDesktopMenuElements = () => {
146                //Desktop menu
147                const allDesktopMenuContainer = mainNavigationMenuItems ? mainNavigationMenuItems.querySelectorAll('.rbhu-menu-container') : null;
148                if (allDesktopMenuContainer) {
149                    allDesktopMenuContainer.forEach(function (menuContainer) {
150                        const menuContainerLink = menuContainer.querySelector('a.body-regular');
151                        const menuContainerLinkHref = menuContainerLink.getAttribute('href');
152
153                        if (isPathContainsLink(menuContainerLinkHref, currentSiteUrl)) {
154                            menuContainerLink.classList.add('selected')
155                            menuContainer.classList.add('selected');
156                        } else {
157                            const mainNavigationDropdown = menuContainer.querySelector('.rbhu-main-navigation-content');
158                            const menuHeaderLink = mainNavigationDropdown ? mainNavigationDropdown.querySelector('a.rbhu-menu-header-link') : null;
159                            const menuHeaderLinkHref = menuHeaderLink ? menuHeaderLink.getAttribute('href') : null;
160                            if (isPathContainsLink(menuHeaderLinkHref, currentSiteUrl)) {
161                                menuHeaderLink.classList.add('selected')
162                                menuContainer.classList.add('selected');
163                            } else {
164                                const menuColumns = mainNavigationDropdown ? mainNavigationDropdown.querySelectorAll('.rbhu-menu-column') : null;
165                                if (menuColumns) {
166                                    menuColumns.forEach(function (menuColumn) {
167                                        const columnTitleLink = menuColumn.querySelector('a.rbhu-column-title');
168                                        const columnTitleLinkHref = columnTitleLink ? columnTitleLink.getAttribute('href') : null;
169                                        if (isPathContainsLink(columnTitleLinkHref, currentSiteUrl)) {
170                                            columnTitleLink.classList.add('selected');
171                                            menuContainerLink.classList.add('visited');
172                                            menuContainer.classList.add('selected');
173                                        } else {
174                                            const menuBlockContents = menuColumn.querySelectorAll('.rbhu-block-content');
175                                            menuBlockContents.forEac
175h(function (blockContent) {
176                                                const blockContentLink = blockContent.querySelector('a.rbhu-block-content-link');
177                                                const blockContentLinkHref = blockContentLink ? blockContentLink.getAttribute('href') : null;
178                                                if (isPathContainsLink(blockContentLinkHref, currentSiteUrl)) {
179                                                    blockContentLink.classList.add('selected');
180                                                    menuContainerLink.classList.add('visited');
181                                                    menuContainer.classList.add('selected');
182                                                }
183                                            });
184                                        }
185                                    });
186                                }
187                            }
188                        }
189                    });
190                }
191            }
192
193            // Admin nézetben ne ragadjon fel a menü
194            function adminStickyMenuHandle() {
195                if (!adminMenu) {
196                    window.onscroll = function () {
197                        functionStickyNavBar();
198                    };
199
200                    let mainMenuNavBar = document.getElementById("mainMenuNavBar");
201                    let subMenuNavBars = document.querySelectorAll("#subMenuNavBar");
202                    let mobileSubMenuNavBars = document.querySelectorAll("#mobileStickySubMenuNavBar");
203                    let stickyPoz = mainMenuNavBar.offsetTop;
204
205                    function functionStickyNavBar() {
206                        if ((window.pageYOffset || document.documentElement.scrollTop) >= stickyPoz) {
207                            mainMenuNavBar.classList.add("stickyNavBar");
208                            subMenuNavBars.forEach(function (subMenuNavBar) {
209                                subMenuNavBar.classList.add("stickySubMenuNavBar");
210                            });
211                            mobileSubMenuNavBars.forEach(function (mobileSubMenuNavBar) {
212                                mobileSubMenuNavBar.classList.add("mobileStickySubMenuNavBar");
213                            });
214                        } else {
215                            mainMenuNavBar.classList.remove("stickyNavBar");
216                            subMenuNavBars.forEach(function (subMenuNavBar) {
217                                subMenuNavBar.classList.remove("stickySubMenuNavBar");
218                            });
219                            mobileSubMenuNavBars.forEach(function (mobileSubMenuNavBar) {
220                                mobileSubMenuNavBar.classList.remove("mobileStickySubMenuNavBar");
221                            });
222                        }
223                    }
224                }
225            }
226
227            function checkActiveSite() {
228                if (siteNavigationMenuItems != null) {
229                    const menuItem = siteNavigationMenuItems.querySelectorAll('.rbhu-site-navigation-menu-item');
230                    menuItem.forEach(item => {
231                        const menuItemUrlHref = item.getAttribute('data-url');
232                        if (menuItemUrlHref) {
233                            const parts = menuItemUrlHref.split('/').slice(3);
234                            const thirdPartOnwards = parts.join('/');
235
236                            if (thirdPartOnwards && currentSiteUrl.includes(thirdPartOnwards)) {
237                                item.classList.add('active');
238                            }
239                        }
240                    });
241                }
242
243                if (mainNavigationMenuItems != null) {
244                    const menuContainer = mainNavigationMenuItems.querySelectorAll('.rbhu-menu-container');
245                    menuContainer.forEach(container => {
246                        const menuContainerUrl = container.querySelector('a');
247
248                        if (!menuContainerUrl.getAttribute('data-url')) {
249                            menuContainerUrl.addEventListener('click', toggleMainMenu);
250                        }
251                    });
252                }
253            }
254
255            function showOrHideMobileSiteMenu() {
256                activateSiteMenuElements();
257                let menuContainer;
258                let dropdownMenuItemContainers;
259                let currentSiteButton;
260
261                /* Ha megvan nyitva a mobilmenü, akkor zárja be nagyobb felbontásra váltáskor */
262                mobileMenu = document.getElementById('mobileStickySubMenuNavBar');
263                if (mobileMenu && mobileMenu.classList.contains('show') && window.innerWidth > 1200) {
264                    closeAllMenus();
265                }
266
267                if (siteNavigationMenuItems) {
268                    dropdownMenuItemContainers = siteNavigationMenuItems.querySelectorAll('.rbhu-site-navigation-menu-dropdown');
269                    currentSiteButton = siteNavigationMenuItems.querySelector('.rbhu-site-navigation-current-site-button');
270                }
271                if (window.innerWidth <= 980) {
272                    if (dropdownMenuItemContainers) {
273                        dropdownMenuItemContainers.forEach(item => {
274                            const activeLink = item.querySelector('a.active');
275
276                            if (activeLink) {
277                                currentSiteButton.textContent = activeLink.textContent;
278                            }
279                        });
280                    }
281
282                    if (currentSiteButton) {
283                        currentSiteButton.addEventListener('click', toggleSiteMobileMenu);
284                    }
285                } else {
286                    if (menuContainer) {
287                        menuContainer.style.display = 'flex';
288                    }
289                    if (dropdownMenuContainer) {
290                        dropdownMenuContainer.classList.remove('show');
291                    }
292                    if (siteNavigationMenuItems) {
293                        siteNavigationMenuItems.classList.remove('active');
294                    }
295                }
296            }
297
298            function toggleMainMenu(event) {
299                event.preventDefault();
300
301                let button = event.target.closest('a.body-regular');
302                let menuContainer = button.closest('.rbhu-menu-container');
303                let content = menuContainer.querySelector('.rbhu-main-navigation-content');
304
305                if (!content) return;
306
307                if (content.classList.contains('show')) {
308                    content.classList.remove('show');
309                    button.classList.remove('active');
310                    button.setAttribute('aria-expanded', 'false');
311                    if (overlay) {
312                        overlay.classList.remove('show');
313                    }
314                } else {
315                    closeMainMenu();
316
317                    content.classList.add('show');
318                    button.classList.add('active');
319                    button.setAttribute('aria-expanded', 'true');
320                    if (overlay) {
321                        overlay.classList.add('show');
322                    }
323                }
324
325                if (menuCloseButton) {
326                    menuCloseButton.forEach(closeButton => {
327                        closeButton.addEventListener('click', closeMainMenu);
328                    });
329                }
330            }
331
332            function toggleSiteMobileMenu(event) {
333                event.preventDefault();
334
335                // Bezárjuk a fő menüt mielőtt kinyitjuk a site választó menüt
336                closeMainMobileMenu();
337
338                if (dropdownMenuContainer) {
339                    toggleMenu(dropdownMenuContainer, siteNavigationMenuItems, true);
340
341                    dropdownMenuContainer.addEventListener('click', function () {
342                        closeSiteMobileMenu();
343                    });
344                }
345            }
346
347            function handleOverlay() {
348                if (overlay) {
349                    overlay.addEventListener('click', function () {
350                        closeAllMenus();
351                        document.body.classList.remove('scroll-lock');
352                        document.querySelector('html').classList.remove('scroll-lock');
353                    })
354                }
355            }
356
357            function handleMainMobileMenu() {
358                if (mobileMenuBurgerButton && burgerIcon && mobileMenu) {
359                    mobileMenuBurgerButton.addEventListener('click', function () {
360                        closeEverythingInMobileMenu();
361                        toggleMenu(mobileMenu, burgerIcon, true);
362                    });
363                }
364            }
365
366
367            function closeMainMenu() {
368                let subMenuContent = document.querySelector('.rbhu-main-navigation-content.show');
369                let activeMenuItem = document.querySelector('.body-regular.active');
370                if (subMenuContent && activeMenuItem) {
371                    subMenuContent.classList.remove('show');
372                    activeMenuItem.classList.remove('active');
373                    activeMenuItem.setAttribute('aria-expanded', 'false');
374                }
375                if (overlay) {
376                    overlay.classList.remove('show');
377                }
378            }
379
380            function closeMainMobileMenu() {
381                closeEverythingInMobileMenu();
382
383                if (mobileMenu) {
384                    mobileMenu.classList.remove('show');
385                }
386                if (burgerIcon) {
387                    burgerIcon.classList.remove('active');
388                }
389                if (overlay) {
390                    overlay.classList.remove('show');
391                }
392            }
393
394            function closeEverythingInMobileMenu() {
395                const allElements = mobileMenu ? mobileMenu.querySelectorAll('.show, .visited') : null;
396
397                if (allElements) {
398                    allElements.forEach(element => {
399                        element.classList.remove('show', 'visited');
400                    });
401                }
402            }
403
404            function closeSiteMobileMenu() {
405                if (dropdownMenuContainer) {
406                    dropdownMenuContainer.classList.remove('show');
407                }
408                if (siteNavigationMenuItems) {
409                    siteNavigationMenuItems.classList.remove('active');
410                }
411                if (overlay) {
412                    overlay.classList.remove('show');
413                }
414                document.body.classList.remove('scroll-lock');
415                document.querySelector('html').classList.remove('scroll-lock');
416            }
417
418            function toggleMenu(menuElement, button, withScrollLock) {
419                activateMobileMenuElements();
420                activateDesktopMenuElements()
421                let isAlreadyActive = menuElement ? menuElement.classList.contains('show') : false;
422
423                if (isAlreadyActive) {
424                    if (menuElement) {
425                        menuElement.classList.remove('show');
426                    }
427                    button.classList.remove('active');
428                    overlay.classList.remove('show');
429                    if (withScrollLock) {
430                        document.body.classList.remove('scroll-lock');
431                        document.querySelector('html').classList.remove('scroll-lock');
432                    }
433                } else {
434                    if (menuElement) {
435                        menuElement.classList.add('show');
436                    }
437                    button.classList.add('active');
438                    overlay.classList.add('show');
439                    if (withScrollLock) {
440                        document.body.classList.add('scroll-lock');
441                        document.querySelector('html').classList.add('scroll-lock');
442                    }
443                }
444            }
445
446            const openableItems = document.querySelectorAll('.rbhu-menu-item.openable');
447            openableItems.forEach(item => {
448                item.addEventListener('click', function () {
449                    const mobileContent = item.nextElementSibling;
450                    if (mobileContent.classList.contains('rbhu-mobile-navigation-content')) {
451                        mobileContent.classList.toggle('show');
452                        item.classList.toggle('visited');
453                    }
454                });
455            });
456
457            const menuBlocks = document.querySelectorAll('.rbhu-menu-blocks');
458            menuBlocks.forEach(block => {
459                const listItems = block.querySelectorAll('li');
460                listItems.forEach(item => {
461                    const openable = item.querySelector('.rbhu-column-title.openable');
462                    if (openable) {
463                        item.addEventListener('click', function () {
464                            const itemContent = item.querySelector('.rbhu-block-content');
465                            if (itemContent) {
466                                itemContent.classList.toggle('show');
467                                openable.classList.toggle('visited');
468                            }
469                        });
470                    }
471                });
472            });
473
474            const columnTitleUnlinkItems = document.querySelectorAll('.rbhu-column-title-unlink.openable');
475            columnTitleUnlinkItems.forEach(item => {
476                item.addEventListener('click', function () {
477                    const blockContent = item.nextElementSibling; // A következő elem a 'rbhu-block-content'
478                    if (blockContent && blockContent.classList.contains('rbhu-block-content')) {
479                        blockContent.classList.toggle('show');
480                        item.classList.toggle('visited');
481                    }
482                });
483            });
484
485            let desktopMenu = document.querySelector('.rbhu-desktop-menu');
486            let menuItems;
487            if (desktopMenu) {
488                menuItems = desktopMenu.querySelectorAll('.rbhu-menu-blocks > li');
489            }
490            let openStates = {};
491
492            if (menuItems) {
493                menuItems.forEach(function (menuItem) {
494                    let correspondingDivs = desktopMenu.querySelectorAll('.rbhu-menu-blocks > div.' + menuItem.className);
495                    if (correspondingDivs.length > 0) {
496                        openStates[menuItem.className] = false;
497
498                        let anchor = menuItem.querySelector('a');
499                        if (anchor) {
500                            anchor.addEventListener('click', function () {
501                                let isOpen = openStates[menuItem.className];
502                                if (isOpen) {
503                                    correspondingDivs.forEach(function (div) {
504                                        div.style.display = 'none';
505                                    });
506                                    openStates[menuItem.className] = false;
507                                } else {
508                                    correspondingDivs.forEach(function (div) {
509                                        div.style.display = 'block';
510                                    });
511                                    openStates[menuItem.className] = true;
512                                }
513
514                                anchor.classList.toggle('visited');
515                            });
516                        }
517                    }
518                });
519            }
520
521            let resizeTimer;
522            window.addEventListener('resize', function () {
523                clearTimeout(resizeTimer);
524                resizeTimer = setTimeout(showOrHideMobileSiteMenu, 200);
525            });
526            window.addEventListener('load', showOrHideMobileSiteMenu);
527            window.addEventListener('load', activateSiteMenuElements);
528            window.addEventListener('load', activateMobileMenuElements);
529            window.addEventListener('load', activateDesktopMenuElements);
530
531            function isPathContainsLink(link, path) {
532                if (path && link) {
533                    const lastSegmentPath = getLastSegmentFromPath(path);
534                    const lastSegmentLink = getLastSegmentFromPath(link);
535                    return lastSegmentPath !== '' && lastSegmentLink !== '' && lastSegmentPath === lastSegmentLink;
536                }
537                return false;
538            }
539
540            function compareWebSegmentsWithExactMatch(urlInput, pathInput) {
541                const url = new URL(pathInput);
542                const urlPathName = url.pathname;
543                const pathSegments = urlPathName.replace(/\/web\/[^\/]*\//, '/');
544                const urlInputSegment = urlInput.replace(/\/web\/[^\/]*\//, '/');
545                return pathSegments === urlInputSegment;
546            }
547
548            function compareWebSegments(urlInput, pathInput) {
549                const pathSegments = pathInput.split('/').filter(Boolean);
550                const urlSegments = urlInput.split('/').filter(Boolean);
551
552                const noProtocol = pathInput.replace(/^https?:\/\//, '');
553                const domain = noProtocol.split('/')[0];
554                const subdomain = domain.split(/[.-]/)[0];
555
556                for (let i = pathSegments.length - 1; i >= 0; i--) {
557                    const pathSegment = pathSegments[i];
558                    const urlSegment = urlSegments[urlSegments.length - 1];
559
560                    if (pathSegment === urlSegment) {
561                        return true;
562                    }
563
564                    if (/\.(hu|com|net|org|eu|gov)$/.test(pathSegment)) {
565                        break;
566                    }
567                }
568
569                return subdomain === urlSegments[urlSegments.length - 1];
570            }
571
572            function getLastSegmentFromPath(url) {
573                // Vizsgáljuk csak a ? előtti részt
574                const queryIndex = url.indexOf('?');
575                if (queryIndex !== -1) {
576                    url = url.slice(0, queryIndex);
577                }
578
579                const huIndex = url.indexOf('.hu');
580                let slicedUrl = url;
581                if (huIndex !== -1) {
582                    slicedUrl = url.slice(huIndex + 4);
583                    const segments = slicedUrl.split('/');
584                    slicedUrl = segments[segments.length - 1];
585                }
586
587                if (slicedUrl.startsWith('web/') || slicedUrl.startsWith('/web/')) {
588                    // Távolítsuk el a /web/ részt
589                    const remainingPath = slicedUrl.startsWith('/web/') ? slicedUrl.slice(5) : slicedUrl.slice(4);
590                    // Szétbontás a / karakter mentén, és az utolsó rész visszaadása
591                    const segments = remainingPath.split('/');
592                    return segments[segments.length - 1];
593                }
594
595                return slicedUrl;
596            }
597
598            document.querySelectorAll('[aria-haspopup="true"]').forEach(trigger => {
599                const submenuId = trigger.getAttribute('aria-controls');
600                const submenu = document.getElementById(submenuId);
601
602                if (!submenu) return;
603
604                trigger.addEventListener('click', () => {
605                    const expanded = trigger.getAttribute('aria-expanded') === 'true';
606                    trigger.setAttribute('aria-expanded', !expanded);
607                    submenu.hidden = expanded;
608
609                    if (!expanded) {
610                        lastOpenedTrigger = trigger;
611
612                        // Töröljük az előző 'data-last-focus' jelölést
613                        submenu.querySelectorAll('[data-last-focus]').forEach(el => {
614                            el.removeAttribute('data-last-focus');
615                        });
616
617                        const activeItem = submenu.querySelector('a.body-regular.active');
618                        if (activeItem) {
619                            activeItem.setAttribute('data-last-focus', 'true');
620                            activeItem.focus();
621                        } else {
622                            const focusable = submenu.querySelector('a, button, input, [tabindex]:not
622([tabindex="-1"])');
623                            if (focusable) {
624                                focusable.setAttribute('data-last-focus', 'true');
625                                focusable.focus();
626                            }
627                        }
628                    }
629                });
630            });
631
632            document.addEventListener('keydown', (e) => {
633                const active = document.activeElement;
634                const submenu = document.querySelector('.rbhu-main-navigation-content.show');
635
636                switch (e.key) {
637                    case 'Escape':
638                        if (submenu) {
639                            e.preventDefault();
640                            closeMainMenu();
641
642                            // submenu parent div
643                            const menuContainer = submenu.closest('.rbhu-menu-container');
644
645                            // visszakeresés: submenu-t nyitó gomb
646                            const triggerLink = menuContainer?.querySelector('a.body-regular[aria-controls]');
647                            if (triggerLink) {
648                                triggerLink.focus();
649                            }
650                        }
651                        break;
652
653                    case 'ArrowDown':
654                        if (active && active.matches('a.body-regular')) {
655                            e.preventDefault();
656
657                            const links = Array.from(document.querySelectorAll('a.body-regular'));
658                            const index = links.indexOf(active);
659
660                            if (index > -1 && index < links.length - 1) {
661                                links[index + 1].focus();
662                            }
663                        }
664                        break;
665
666                    case 'ArrowUp':
667                        if (active && active.matches('a.body-regular')) {
668                            e.preventDefault();
669
670                            const links = Array.from(document.querySelectorAll('a.body-regular'));
671                            const index = links.indexOf(active);
672
673                            if (index > 0) {
674                                links[index - 1].focus();
675                            }
676                        }
677                        break;
678
679                    case 'Tab':
680                        if (submenu) {
681                            setTimeout(() => {
682                                const focusedNow = document.activeElement;
683                                if (!submenu.contains(focusedNow)) {
684                                    closeMainMenu();
685                                }
686                            }, 0);
687                        }
688                        break;
689
690                }
691            });
692        };
693
694        return {
695            app: app,
696        };
697    }
698)
699();

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.