PageSourceSearch

https://rybar.ru/wp-content/themes/rybar/assets/js/main.js?ver=2.0.2-0.1.7

js rybar.ru collected 2026-10-02 04:34:39 UTC 8,359 bytes, 228 lines download raw bytes

1
2//-------------------------------------------------------------------------//
3// Меню в шапке
4//-------------------------------------------------------------------------//
5document.addEventListener('DOMContentLoaded', function() {
6    // Обработчик кликов по пунктам меню
7    document.querySelectorAll('#desktop-menu .menu-item-has-children').forEach(item => {
8        const link = item.querySelector('a');
9        const submenu = item.querySelector('.menu__subMenu');
10        
11        link.addEventListener('click', function(e) {
12            e.preventDefault();
13            e.stopPropagation();
14            
15            const isActive = submenu.classList.contains('active');
16            
17            // Закрываем все подменю
18            document.querySelectorAll('.menu__subMenu').forEach(menu => {
19                if(menu !== submenu) {
20                    menu.classList.remove('active');
21                    menu.parentElement.classList.remove('active');
22                }
23            });
24            
25            // Переключаем текущее меню
26            submenu.classList.toggle('active', !isActive);
27            item.classList.toggle('active', !isActive);
28        });
29    });
30
31    // Закрытие при клике вне меню
32    document.addEventListener('click', function(e) {
33        if(!e.target.closest('#desktop-menu .menu-item-has-children')) {
34            document.querySelectorAll('.menu__subMenu').forEach(menu => {
35                menu.classList.remove('active');
36                menu.parentElement.classList.remove('active');
37            });
38        }
39    });
40});
41
42// Меню в шапке конец
43//-------------------------------------------------------------------------//
44// Мобильное меню
45//-------------------------------------------------------------------------//
46
47document.addEventListener('DOMContentLoaded', function() {
48    const mobileMenu = document.querySelector('.mobile-menu-block');
49    const mobileMenuClose = document.querySelector('.mobile-menu-close');
50    const mobileMenuOverlay = document.querySelector('.mobile-menu-overlay');
51
52    // Открытие меню
53    document.querySelector('.mobile-menu-button').addEventListener('click', function(e) {
54        e.preventDefault();
55        mobileMenu.style.transform = 'translateX(0)';
56        mobileMenuOverlay.style.display = 'block';
57        setTimeout(() => mobileMenuOverlay.classList.add('active'), 10);
58    });
59
60    // Закрытие меню
61    function closeMobileMenu() {
62        mobileMenu.style.transform = 'translateX(100%)';
63        mobileMenuOverlay.classList.remove('active');
64        setTimeout(() => mobileMenuOverlay.style.display = 'none', 300);
65    }
66
67    mobileMenuClose.addEventListener('click', closeMobileMenu);
68    mobileMenuOverlay.addEventListener('click', closeMobileMenu);
69
70	
71	document.querySelectorAll('.mobile-menu .menu-item-has-children > a').forEach(item => {
72        item.addEventListener('click', function(e) {
73            e.preventDefault();
74            const parent = this.parentElement;
75            const submenu = this.nextElementSibling;
76            
77            // Закрываем другие подменю
78            document.querySelectorAll('.mobile-menu .menu-item-has-children').forEach(menu => {
79                if (menu !== parent) {
80                    menu.classList.remove('active');
81                    menu.querySelector('.sub-menu').style.maxHeight = '0';
82                    menu.querySelector('a svg').style.transform = 'rotate(0)';
83                }
84            });
85
86            // Переключаем текущее
87            const isActive = parent.classList.toggle('active');
88            submenu.style.maxHeight = isActive ? submenu.scrollHeight + 'px' : '0';
89            this.querySelector('svg').style.transform = isActive ? 'rotate(180deg)' : 'rotate(0)';
90        });
91    });
92});
93
94// Мобильное меню конец
95//-------------------------------------------------------------------------//
96// AJAX загрузка на главной (firstpage-2.php)
97//-------------------------------------------------------------------------//
98
99	var current_category = 'news';
100	var c_taxterm = 0;
101	var loading = false;
102
103	function load_posts(current_category, c_taxterm, offset) {
104		if (loading) {
105			return;
106		}
107		loading = true;
108		jQuery('#loaderajax').show();
109		offset = offset || 0; 
110		jQuery.ajax({
111			url: '/wp-admin/admin-ajax.php',
112			type: 'POST',
113			data: {
114				action: 'load_posts',
115				category: current_category,
116				taxterm: c_taxterm,
117				offset: offset,
118			},
119		
120			beforeSend: function () {
121			  loading = true;
122			},
123		
124			success: function (data) {
125				if (data.trim()) {
126					var new_items = jQuery(data);
127					jQuery('#newsblock').append(new_items);
128					offset += 4;
129					loading = false;
130				} else {
131					jQuery(window).off('scroll');
132				}
133				jQuery('#loaderajax').hide();
134			},
135		
136			error: function (xhr, status, error) {
137				console.log(xhr.responseText);
138			},
139		
140			complete: function () {
141				setTimeout(function () {
142					loading = false;
143				}, 1000);
144				jQuery('#morenews').attr('data-offset', offset);
145			},
146		});
147	}
148
149	// Файл подключается глобально, но AJAX-блок существует только на главной.
150	if (document.getElementById('newsblock') && !window.rybarFrontNewsBooted) {
151		window.rybarFrontNewsBooted = true;
152		load_posts('news', 0, 0);
153	}
154
155
156// AJAX загрузка на главной (firstpage-2.php) конец
157//-------------------------------------------------------------------------//
158// AJAX кнопки выбора категории на главной (firstpage-2.php) 
159//-------------------------------------------------------------------------//
160
161jQuery(document).ready(function() {
162    jQuery('.cat-choose').off('click.rybarFrontNews').on('click.rybarFrontNews', function(e) {
163        e.preventDefault();
164        const category = jQuery(this).data('category');
165        
166        jQuery('#newsblock')
167            .css('opacity', '0.5')
168            .empty();
169
170        load_posts(category);
171		
172        jQuery('.cat-choose')
173            .not(this)
174            .removeClass('bg-accent-orange text-white')
175            .addClass('bg-dark-700 theme-text-primary hover:bg-accent-orange/10');
176
177        jQuery(this)
178            .addClass('bg-accent-orange text-white')
179            .removeClass('bg-dark-700 theme-text-primary hover:bg-accent-orange/10');
180			
181
182		jQuery('#morenews')
183			.data('category', category) 
184			.data('offset', 4);
185
186        setTimeout(() => {
187            jQuery('#newsblock').css('opacity', '1');
188        }, 300);
189    });
190	
191	jQuery('#morenews').off('click.rybarFrontNews').on('click.rybarFrontNews', function(e) {
192		const category = jQuery(this).data('category');
193		const moreoffset = parseInt(jQuery(this).data('offset')) || 0; // Защита от NaN
194		
195		load_posts(category, 0, moreoffset);
196		mrfst = moreoffset+4;
197		jQuery('#morenews').data('offset', mrfst);
198	});
199	
200	jQuery(document).on('click', '.socialicons-button', function(e) {
201		e.preventDefault();
202		jQuery(this).children('.socialicons').fadeToggle(300);
203		jQuery(this).children('.socialicons').toggleClass('active');
204	 
205	});
206	
207	jQuery(document).on('click', '#opensearchbtn', function(e) {
208		e.preventDefault();
209		jQuery(this).hide();
210		jQuery('#searchform').toggleClass('active');
211		jQuery('#searchform').fadeIn();
212		jQuery('#searchform').css('display','flex');
213		
214	});
215});
216
217// AJAX кнопки выбора категории на главной (firstpage-2.php)  конец
218// ================================================
219// Инициализация Fancybox
220// ================================================
221        Fancybox.bind("[data-fancybox]", {});
222		
223// Инициализация Fancybox конец
224// ================================================
225// 
226// ================================================
227jQuery('.facetwp-date-min').attr('placeholder', 'Начальная дата');
228jQuery('.facetwp-date-max').attr('placeholder', 'Конечная дата');

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.