PageSourceSearch

https://mastergestionmedios.com/wp-content/plugins/mega_main_menu/src/js/frontend.js?ver=2.2.1

js mastergestionmedios.com collected 2026-10-09 23:06:48 UTC 14,435 bytes, 365 lines download raw bytes

1/* 
2 * Function for Mega Main Menu.
3 */
4(function( $ ){ 
5	jQuery(document).ready(function(){
6
7		/* 
8		 * Unbinded all previous JS actions with menu.
9		 */
10//		jQuery( '.mega_main_menu, .mega_main_menu *' ).unbind();
11
12		/* 
13		 * INIT
14		 */
15		mmm_reversal_z_index();
16		mmm_sticky_menu();
17		mmm_fullwidth_menu();
18		mmm_keep_open();
19		mmm_height_of_tabs_dropdown();
20		mmm_pushing_content();
21		mmm_mobile_double_tap_to_go();
22		mmm_mobile_toggle_menu();
23		mmm_smooth_scroll_to_anchor();
24		mmm_accessibility_actions();
25
26		/* 
27		 * EVENTS
28		 */
29		jQuery(window).on( 'resize orientationchange', function(){
30			mmm_sticky_menu();
31			mmm_fullwidth_menu();
32//			mmm_keep_open();
33			mmm_height_of_tabs_dropdown();
34			mmm_pushing_content();
35//			mmm_smooth_scroll_to_anchor();
36//			mmm_mobile_toggle_menu();
37//			mmm_mobile_double_tap_to_go();
38		});
39
40
41		/* 
42		 * Reversal z-index.
43		 */
44		function mmm_reversal_z_index () {
45			var z_index = 1000;
46			function_selector = '.mega_main_menu';
47			jQuery( function_selector ).unbind();
48			jQuery( function_selector ).each(function(index,element){
49				z_index = z_index - 10;
50				jQuery( element ).css({
51					'z-index' : z_index
52				});
53			});
54		}
55
56		/* 
57		 * Mobile toggle menu
58		 */
59		function mmm_mobile_toggle_menu () {
60			function_selector = '.mobile_toggle';
61			jQuery( function_selector ).unbind();
62			jQuery( '.mobile_menu_active' ).removeClass( 'mobile_menu_active' );
63			jQuery( function_selector ).on( 'click', function() {
64				if ( jQuery( this ).parent().hasClass( 'mobile_menu_active' ) ) {
65					jQuery( this ).parent().removeClass( 'mobile_menu_active' );
66					jQuery( this ).parent().parent().removeClass( 'mobile_menu_active' );
67					jQuery( '.mega_main_menu .keep_open' ).removeClass('keep_open');
68				} else {					
69					jQuery( this ).parent().addClass( 'mobile_menu_active' );
70					jQuery( this ).parent().parent().addClass( 'mobile_menu_active' );
71				}
72			});
73		}
74
75		/* 
76		 * Mobile Double tap to go
77		 */
78		function mmm_mobile_double_tap_to_go () {
79			function_selector = '.mega_main_menu li:has(.mega_dropdown) > .item_link, .mega_main_menu li:has(.post_details) > .processed_image';
80			jQuery( function_selector ).unbind();
81			if( /iphone|ipad|ipod|android|webos|blackberry|iemobile|opera mini/i.test( navigator.userAgent.toLowerCase() ) ) 
82			{
83				var clicked_item = false;
84				jQuery( function_selector ).on( 'click', function( index )
85				{
86					if ( clicked_item != this) {
87						index.preventDefault();
88						if ( jQuery( this ).parent().parent().parent().hasClass('keep_open') ) {
89
90						} else {
91							jQuery( '.mega_main_menu .keep_open' ).removeClass('keep_open');
92						}
93						jQuery( this ).parent().addClass('keep_open');
94						clicked_item = this;
95					}
96				});
97			}
98		}
99
100		/* 
101		 * Sticky menu
102		 */
103		function mmm_sticky_menu () {
104			function_selector = '.mega_main_menu > .menu_holder';
105			jQuery( function_selector ).unbind();
106			jQuery( function_selector ).each(function(index,element){
107				var stickyoffset = [];
108				var menu_inner_width = [];
109				var menu_inner = [];
110				var style_attr = [];
111				menu_inner[ index ] = jQuery( element ).find( '.menu_inner' );
112				stickyoffset[ index ] = jQuery( element ).data( 'stickyoffset' ) * 1;
113				if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) {
114					rules_priority = ' !important';
115				} else {
116					rules_priority = '';
117				}
118
119				if ( jQuery( element ).attr( 'data-sticky' ) == '1' && stickyoffset[ index ] == 0 ) {
120					menu_inner_width[ index ] = menu_inner[ index ].parents( '.mega_main_menu' ).width();
121					menu_inner[ index ].attr( 'style' , 'width:' + menu_inner_width[ index ] + 'px;' );
122					jQuery( element ).addClass( 'sticky_container' );
123				} else {
124					jQuery(window).on( 'scroll', function(){
125						if ( jQuery( element ).attr( 'data-sticky' ) == '1' ) {
126							scrollpath = jQuery(window).scrollTop();
127							if ( scrollpath > stickyoffset[ index ] ) {
128								menu_inner_width[ index ] = menu_inner[ index ].parents( '.mega_main_menu' ).width();
129								jQuery( element ).find( '.menu_inner' ).attr( 'style' , 'width:' + menu_inner_width[ index ] + 'px;' );
130								jQuery( element ).find( '.mmm_fullwidth_container' ).attr( 'style' , 'left: 0px' + rules_priority + ';' );
131								if ( !jQuery( element ).hasClass( 'sticky_container' ) ) {
132									jQuery( element ).addClass( 'sticky_container' );
133								}
134							} else {
135								mmm_fullwidth_menu();
136								jQuery( element ).removeClass( 'sticky_container' );
137								style_attr[ index ] = jQuery( menu_inner[ index ] ).attr( 'style' );
138								if ( typeof style_attr[ index ] !== 'undefined' && style_attr[ index ] !== false ) {
139									menu_inner[ index ].removeAttr( 'style' );
140								}
141							}
142						} else {
143							jQuery( element ).removeClass( 'sticky_container' );
144						}
145					});
146				}
147			});
148		}
149
150		/* 
151		 * Fullwidth menu container
152		 */
153		function mmm_fullwidth_menu () {
154			function_selector = '.mega_main_menu.direction-horizontal.fullwidth-enable';
155			jQuery( function_selector ).unbind();
156			body_width = jQuery( 'body' ).width();
157			jQuery( function_selector ).each( function( index, element ) {
158				offset_left = jQuery( element ).offset().left;
159				// rules_priority
160				if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) {
161					rules_priority = ' !important';
162				} else {
163					rules_priority = '';
164				}
165				jQuery( element ).find( '.mmm_fullwidth_container' ).attr( 'style' , 'width:' + body_width + 'px' + rules_priority + ';left: -' + offset_left + 'px' + rules_priority + ';right:auto' + rules_priority + ';' );
166			});
167		}
168
169		/*
170		 * Height of .tabs_dropdown
171		 */
172		function mmm_height_of_tabs_dropdown () {
173			function_selector = '.mega_main_menu .tabs_dropdown > .mega_dropdown > li';
174			jQuery( function_selector ).unbind();
175			// to open first tab when tabs are visible
176			jQuery( '.mega_main_menu .tabs_dropdown' ).on( 'hover mouseleave mouseenter', function( event ){
177				jQuery( '.dropdowns_trigger-hover .keep_open' ).removeClass( 'keep_open' );
178				my_el = jQuery( this ).find( '.mega_dropdown > li' ).first();
179				jQuery( my_el ).parent().css({
180					"min-height": jQuery( my_el ).find( '.mega_dropdown' ).outerHeight( true )
181				});
182				jQuery( my_el ).find( ' > .mega_dropdown' ).css({
183					"min-height": jQuery( my_el ).closest( '.mega_dropdown' ).outerHeight( true )
184				});
185				jQuery( my_el ).addClass( 'keep_open' );
186			});
187			// For Hover
188			jQuery( '.dropdowns_trigger-hover' + function_selector ).on( 'hover mouseenter transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function( event ){
189				jQuery( '.dropdowns_trigger-hover .keep_open' ).removeClass( 'keep_open' );
190				jQuery( this ).parent().css({
191					"min-height": jQuery( this ).find( '.mega_dropdown' ).outerHeight( true )
192				});
193				jQuery( this ).find( ' > .mega_dropdown' ).css({
194					"min-height": jQuery( this ).closest( '.mega_dropdown' ).outerHeight( true )
195				});
196				jQuery( this ).addClass( 'keep_open' );
197			});
198			jQuery( '.dropdowns_trigger-hover' + function_selector ).on( 'mouseleave ', function( event ){
199				jQuery( this ).parent().css({
200					"min-height": '0px'
201				});
202				jQuery( this ).find( ' > .mega_dropdown' ).css({
203					"min-height": '0px'
204				});
205//				jQuery( this ).removeClass( 'keep_open' );
206			});
207			// For Click
208			jQuery( '.dropdowns_trigger-click' + function_selector ).on( 'click', function(){
209				jQuery( this ).parent().parent().find( '.mega_dropdown' ).css({
210					"min-height": '0px'
211				});
212				jQuery( this ).parent().css({
213					"min-height": jQuery( this ).find(' > .mega_dropdown').outerHeight( true )
214				});
215			});
216		}
217
218		/* 
219		 * Pushing the content when dropdowns visible
220		 */
221		function mmm_pushing_content () {
222			function_selector = '.mega_main_menu.direction-horizontal.pushing_content-enable';
223			jQuery( function_selector ).unbind();
224			jQuery( function_selector ).each( function( index, element ) {
225				// rules_priority
226				if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) {
227					rules_priority = ' !important';
228				} else {
229					rules_priority = '';
230				}
231				menu_holder_height = jQuery( element ).find( '.menu_holder' ).outerHeight( true );
232				click_item = false;
233				if ( jQuery( element ).hasClass( 'dropdowns_trigger-click' ) ) {
234					// dropdowns_trigger
235					dropdowns_trigger = 'click';
236					// calculations
237					if ( jQuery( '.mega_main_menu .nav_logo.mobile_menu_active' ).length ) {
238					} else {
239						jQuery( 'body' ).on( dropdowns_trigger, function ( body_el ) {
240								menu_item_class = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
241								if ( typeof jQuery( body_el.target ).parents( '.menu-item' ).attr( 'class' ) != 'undefined' ) {
242									jQuery( element ).css({ height: menu_holder_height + jQuery( this ).find( '.mega_main_menu_ul > li.keep_open > .mega_dropdown' ).outerHeight( true ) + rules_priority });
243									if ( click_item == menu_item_class ) {
244										jQuery( element ).css({ height: menu_holder_height });
245										click_item = false;
246									} else {
247										click_item = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
248									}
249								} else {
250									jQuery( element ).css({ height: menu_holder_height });
251									click_item = false;
252								}
253						});
254					}
255				} else {
256					// dropdowns_trigger
257					dropdowns_trigger = 'hover mouseleave';
258					// calculations
259					if ( jQuery( '.mega_main_menu .nav_logo.mobile_menu_active' ).length ) {
260					} else {
261						jQuery( element ).find( 'li' ).on( dropdowns_trigger, function ( body_el ) {
262								jQuery( element ).delay( 200 ).css({ height: menu_holder_height + jQuery( element ).find( '.mega_main_menu_ul > li:hover > .mega_dropdown' ).outerHeight( true ) + rules_priority });
263						});
264					}
265				}
266			});
267		}
268
269		/* 
270		 * Smooth scroll to anchor link
271		 */
272		function mmm_smooth_scroll_to_anchor () {
273			function_selector = '.mega_main_menu a[href*="#"]:not([href="#"])';
274//			jQuery( function_selector ).unbind();
275			jQuery( function_selector ).on( 'click', function() {
276				if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
277					var target = jQuery(this.hash);
278					target = target.length ? target : jQuery('[name=' + this.hash.slice(1) +'], [id=' + this.hash.slice(1) +']');
279					if (target.length) {
280						jQuery( '.mega_main_menu .current-menu-item' ).removeClass( 'current-menu-item' );
281						jQuery( this ).parent().addClass( 'current-menu-item' );
282						jQuery('html,body').animate({
283							scrollTop: target.offset().top - 90
284						}, 600);
285						jQuery( '.mega_main_menu .mobile_menu_active' ).removeClass( 'mobile_menu_active' );
286//						return false;
287					}
288				}
289			});
290		};
291
292		/* 
293		 * Keep dropdown open if some inner element has a :focus.
294		 */
295		function mmm_keep_open () {
296/*
297			function_selector = '.mega_main_menu .menu-item *';
298			jQuery( function_selector ).unbind();
299			jQuery( function_selector ).on( 'focus', function( index ){
300				jQuery( this ).parents( '.menu-item, .post_item' ).addClass( 'keep_open' );
301			})
302			jQuery( function_selector ).on( 'hover', function( index ){
303				jQuery( this ).parents( '.menu-item, .post_item' ).removeClass( 'keep_open' );
304			})
305			jQuery( function_selector ).on( 'blur', function( index ){
306				jQuery( this ).parents( '.menu-item, .post_item' ).removeClass( 'keep_open' );
307			})
308*/
309			click_item_2 = false;
310/*
311			if( true != /iphone|ipad|ipod|android|webos|blackberry|iemobile|opera mini/i.test( navigator.userAgent.toLowerCase() ) ) 
312			{
313			}
314*/
315			jQuery( 'body' ).on( 'click', function ( body_el ) {
316				menu_item_class = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
317				if ( ( click_item_2 != menu_item_class ) && ( typeof jQuery( body_el.target ).closest( '.mega_main_menu.dropdowns_trigger-click .menu-item:has(.mega_dropdown)' ).attr( 'class' ) != 'undefined' )/* && ( typeof jQuery( body_el.target ).closest( '.mega_main_menu.dropdowns_trigger-click .menu-item:not(.multicolumn_dropdown)' ).attr( 'class' ) == 'undefined' )*/ ) {
318					if ( jQuery( body_el.target ).closest( '.menu-item' ).find( '.mega_dropdown' ).length ) {
319						body_el.preventDefault();
320					}
321					jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' );
322					jQuery( body_el.target ).parents( '.menu-item' ).addClass( 'keep_open' );
323					click_item_2 = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
324				} else if ( jQuery( body_el.target ).is( '.mega_main_menu .mega_dropdown form *:focus' ) ) {
325					jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' );
326					jQuery( body_el.target ).parents( '.menu-item' ).addClass( 'keep_open' );
327				} else if ( ( click_item_2 == menu_item_class ) ) {
328					jQuery( body_el.target ).closest( '.menu-item' ).removeClass( 'keep_open' );
329					click_item_2 = false;
330				} else {
331					jQuery( '.menu-item' ).removeClass( 'keep_open' );
332					click_item_2 = false;
333				}
334			});
335		}
336
337		/* 
338		 * For accessibility compatibility. keep_open dropdowns when user press "space" on keyboard if some menu link in focus.
339		 */
340		function mmm_accessibility_actions () {
341			window.onkeydown = function( onkeydown_event ) {
342				if ( jQuery( onkeydown_event.target ).hasClass( 'item_link' ) ) {
343					if ( onkeydown_event.keyCode == 32 ) {
344						onkeydown_event.preventDefault();
345						check_condition = jQuery( onkeydown_event.target ).parent( '.menu-item' ).hasClass( 'keep_open' );
346						jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' );
347						jQuery( '.mega_main_menu [aria-expanded="true"]' ).attr( 'aria-expanded', false );
348						jQuery( onkeydown_event.target ).parents( '.menu-item' ).addClass( 'keep_open' );
349						jQuery( onkeydown_event.target ).attr( 'aria-expanded', true );
350						jQuery( onkeydown_event.target ).siblings( ".mega_dropdown" ).attr( 'aria-expanded', true );
351						if ( check_condition ) {
352							jQuery( onkeydown_event.target ).parent( '.menu-item' ).removeClass( 'keep_open' );
353							jQuery( onkeydown_event.target ).attr( 'aria-expanded', false );
354							jQuery( onkeydown_event.target ).siblings( ".mega_dropdown" ).attr( 'aria-expanded', false );
355						}
356					}
357				} else {
358					jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' );
359					jQuery( '.mega_main_menu [aria-expanded="true"]' ).attr( 'aria-expanded', false );
360				}
361			};
362		}
363
364	});
365})(jQuery);

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.