PageSourceSearch

https://www.4dox.cz/user/templates/static-assets/js/modules/mobile-menu.js?build=601

js 4dox.cz collected 2026-10-08 00:12:28 UTC 7,598 bytes, 191 lines download raw bytes

1class MobileMenu {
2    constructor() {
3        this.mobileMenuOpener = '#modules-mobile-menu-opener';
4        this.mainMenuID = '#modules-mobile-menu';
5        this.overlayID = '#modules-mobile-menu-overlay';
6        this.init();
7    }
8
9    init() {
10        this.menu = $(this.mainMenuID);
11        this.initControls();
12        this.initAutocomplete();
13        this.initCurrencySelect();
14        this.initLanguageselect();
15        this.element = $(this.mainMenuID);
16        if (this.element.length) {
17            this.element.find('.modules-mobile-menu-item.has-children').each(function () {
18                $(this).find('.modules-mobile-menu-show-more').click(function (e) {
19                    // Otevřeme .modules-mobile-menu-selection
20                    e.preventDefault();
21                    var menu = $(this).next('.modules-mobile-menu-selection');
22
23                    if (menu.length) {
24                        if (menu.hasClass('open')) {
25                            menu.css('max-height', menu[0].scrollHeight + 'px'); // pro jistotu
26                            setTimeout(() => {
27                                menu.css('max-height', '0');
28                            }, 10);
29                            menu.removeClass('open');
30                            $(this).addClass('fa-plus').removeClass('fa-minus');
31                        } else {
32                            menu.addClass('open');
33                            menu.css('max-height', menu[0].scrollHeight + 'px');
34                            $(this).addClass('fa-minus').removeClass('fa-plus');
35                        }
36                    }
37                });
38            });
39        }
40        this.initListeners();
41    }
42
43    initListeners() {
44        document.addEventListener('nodyEvent_cart_add_success', function (event) {
45            // Jen zvýšíme badge o 1
46            var _now = 0;
47            if (parseInt($('.modules-mobile-menu-badge-cart').html()) > 0) {
48                _now = parseInt($('.modules-mobile-menu-badge-cart').html());
49            }
50            $('.modules-mobile-menu-badge-cart').html((_now + 1) + '');
51        });
52        document.addEventListener('nodyEvent_compare_add_success', function (event) {
53            // Jen zvýšíme badge o 1
54            var _now = 0;
55            if (parseInt($('.modules-mobile-menu-badge-compare').html()) > 0) {
56                _now = parseInt($('.modules-mobile-menu-badge-compare').html());
57            }
58            $('.modules-mobile-menu-badge-compare').html((_now + 1) + '');
59        });
60        document.addEventListener('nodyEvent_wishlist_add_success', function (event) {
61            // Jen zvýšíme badge o 1
62            var _now = 0;
63            if (parseInt($('.modules-mobile-menu-badge-wishlist').html()) > 0) {
64                _now = parseInt($('.modules-mobile-menu-badge-wishlist').html());
65            }
66            $('.modules-mobile-menu-badge-wishlist').html((_now + 1) + '');
67        });
68    }
69
70    initControls() {
71        this.menuOpened = false;
72        this.menuOpener = $(this.mobileMenuOpener);
73        this.menuOverlay = $(this.overlayID);
74        if (this.menuOpener.length) {
75            $(this.menuOpener).click(function () {
76                nody.modules.MobileMenu.runOpener();
77            });
78        }
79        $('.modules-mobile-menu-close').find('i').click(function () {
80            nody.modules.MobileMenu.runOpener();
81        });
82        this.menuOverlay.click(function () {
83            nody.modules.MobileMenu.runOpener();
84        });
85    }
86
87    runOpener() {
88        if (this.menuOpened === false) {
89            // Open
90            $('body').addClass('modules-mobile-menu-opened');
91            this.menu.addClass('active');
92            this.menuOverlay.css('pointer-events', "auto");
93            this.menuOverlay.show();
94            this.menuOpened = true;
95        } else {
96            // Close
97            $('body').removeClass('modules-mobile-menu-opened');
98            this.menu.removeClass('active');
99            this.menuOverlay.css('pointer-events', "none");
100            this.menuOverlay.hide();
101            this.menuOpened = false;
102        }
103    }
104
105    closeLanguage() {
106        this.LanguageOpened = false;
107        $('#modules-mobile-menu-select-language').slideUp('slow', function () {
108            $(this).hide();
109        });
110    }
111    openLanguage() {
112        this.LanguageOpened = true;
113        $('#modules-mobile-menu-select-language').slideDown('slow', function () {
114            $(this).show();
115
116        });
117    }
118    closeCurrency() {
119        console.log('closeCurrency');
120        this.CurrencyOpened = false;
121        $('#modules-mobile-menu-select-currecny').slideUp('slow', function () {
122            $(this).hide();
123        });
124    }
125    openCurrency() {
126        console.log('openCurrency');
127        this.CurrencyOpened = true;
128        $('#modules-mobile-menu-select-currecny').slideDown('slow', function () {
129            $(this).show();
130
131        });
132    }
133
134    initCurrencySelect() {
135        var a = $('#modules-mobile-menu-select-currecny');
136        if (a.length) {
137            a.find('.set-currency').each(function () {
138                $(this).click(function (e) {
139                    e.preventDefault();
140                    DefinedCurrencyClick($(this));
141                });
142            });
143        }
144
145        this.CurrencyOpened = false;
146        $('#modules-mobile-menu .modules-mobile-menu-select-currency').click(function () {
147            if (nody.modules.MobileMenu.LanguageOpened === true) {
148                nody.modules.MobileMenu.closeLanguage();
149            }
150            if (nody.modules.MobileMenu.CurrencyOpened === false) {
151                nody.modules.MobileMenu.openCurrency();
152            } else {
153                nody.modules.MobileMenu.closeCurrency();
154            }
155        });
156    }
157
158    initLanguageselect() {
159        this.LanguageOpened = false;
160        $('#modules-mobile-menu .modules-mobile-menu-select-language').click(function () {
161            if (nody.modules.MobileMenu.CurrencyOpened === true) {
162                nody.modules.MobileMenu.closeCurrency();
163            }
164            if (nody.modules.MobileMenu.LanguageOpened === false) {
165                nody.modules.MobileMenu.openLanguage();
166            } else {
167                nody.modules.MobileMenu.closeLanguage();
168            }
169        });
170    }
171
172    initAutocomplete() {
173        this.timeout = false;
174        $('.modules-mobile-menu-search-wrapper .modules-mobile-menu-search-input').on('keydown', function () {
175            if (this.timeout !== false) {
176                clearTimeout(this.timeout);
177            }
178            this.timeout = setTimeout(function () {
179                $('.modules-mobile-menu-search-wrapper .autocomplete').load(nody.functions.append_url('/get/autocomplete/?term=' + encodeURIComponent($('.modules-mobile-menu-search-wrapper:visible .modules-mobile-menu-search-input[type=text]').val())), function (e) {
180                    $(this).css('width', $('.modules-mobile-menu-search-wrapper:visible .modules-mobile-menu-search-input[type=text]').outerWidth()).show();
181                    $(this).find('.show_all a').on('click', function () {
182                        $(this).closest('.modules-mobile-menu-search-wrapper').submit();
183                    });
184                });
185                timeout = false;
186            }, 500);
187        });
188    }
189}
190
191nody.modules.MobileMenu = new MobileMenu();

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.