PageSourceSearch

https://bhbfood.com/wp-content/themes/benqu/assets/js/scripts.js?ver=1.0.0

js bhbfood.com collected 2026-10-02 11:44:30 UTC 22,352 bytes, 725 lines download raw bytes

1
2(function ($) {
3    "use strict";
4
5    /**
6    * Search
7    */
8    $('.pfy-search-btn').on("click", function (){
9		$('.benqu_header_search').addClass('active');
10	});
11	$('.close-btn').on("click", function (){
12		$('.benqu_header_search').removeClass('active');
13	});
14
15    /**
16    *Sticky Sidebar
17    */
18    if (typeof $.fn.theiaStickySidebar !== "undefined") {
19		$(".benqu-sticky-wrap .benqu-sticky-item").theiaStickySidebar({
20		  additionalMarginTop: 130,
21		});
22	  }
23
24    // mobile menu start
25    $('#pfy-mobile-menu').metisMenu();
26
27    $('#pfy-mobile-menu .dropdown > a').on('click', function (e) {
28		e.preventDefault();
29	});
30
31	$(".hamburger_menu > a").on("click", function (e) {
32		e.preventDefault();
33		$(".slide-bar").toggleClass("show");
34		$("body").addClass("on-side");
35		$('.body-overlay').addClass('active');
36		$(this).addClass('active');
37	});
38
39	$(".close-mobile-menu > a").on("click", function (e) {
40		e.preventDefault();
41		$(".slide-bar").removeClass("show");
42		$("body").removeClass("on-side");
43		$('.body-overlay').removeClass('active');
44		$('.hamburger_menu > a').removeClass('active');
45	});
46
47	$('.body-overlay').on('click', function () {
48		$(this).removeClass('active');
49		$(".slide-bar").removeClass("show");
50		$("body").removeClass("on-side");
51		$('.hamburger-menu > a').removeClass('active');
52	});
53
54    /***
55    *Dark Switch
56    */
57    window.onload = function () {
58		// Dark
59		const toggleSwitch = document.querySelector(
60		  '.benqu-switch-box__input'
61		);
62		const currentTheme = localStorage.getItem("theme");
63		if (currentTheme) {
64		  document.documentElement.setAttribute("data-theme", currentTheme);
65		  if (currentTheme === "dark") {
66			toggleSwitch.checked = true;
67		  }
68		}
69		function switchTheme(e) {
70		  if (e.target.checked) {
71			document.documentElement.setAttribute("data-theme", "dark");
72			localStorage.setItem("theme", "dark");
73		  } else {
74			document.documentElement.setAttribute("data-theme", "light");
75			localStorage.setItem("theme", "light");
76		  }
77		}
78		if (toggleSwitch) {
79		  toggleSwitch.addEventListener("change", switchTheme, false);
80		}
81	  };
82
83    // sticky start
84	var wind = $(window);
85	var sticky = $('#stickyHeader');
86	wind.on('scroll', function () {
87		var scroll = wind.scrollTop();
88		if (scroll < 300) {
89			sticky.removeClass('stickyHeader');
90		} else {
91			sticky.addClass('stickyHeader');
92		}
93	});
94	// sticky end
95    /**
96    * Post Widget Slider
97    */       
98    $('.widget-post-slider-wrap').owlCarousel({
99        items:1,
100        loop:true,
101        dots:true,
102        autoplay:true,
103        nav:false,
104        animateOut: 'fadeOut',
105        smartSpeed:1500,
106    });
107
108    /**
109     * Post Slider
110     */   
111     function pfyPostSliderActive( $scope, $ ){
112        var $_this = $scope.find('.pfy-post-slider-wrap');
113
114        var $currentID = '#'+$_this.attr('id'),
115            $navs = $_this.data('navs'),
116            $dots = $_this.data('dots'),
117            $autoplay = $_this.data('autoplay');
118            var pfy_post_slider = $( $currentID );
119        pfy_post_slider.owlCarousel({
120            items:1,
121            loop:true,
122            nav:$navs,
123            dots:$dots,
124            autoplay:$autoplay,
125            autoplayTimeout:5000,
126            smartSpeed:1000,
127            animateOut: 'fadeOut',
128            navText:["<i class='fal fa-angle-left'></i>", "<i class='fal fa-angle-right'></i>"],
129        })
130    };
131
132		/**
133     * Post Article Slider
134     */   
135     function pfyPostArticleSliderActive( $scope, $ ){
136        var $_this = $scope.find('.pfy-post-article-slider-wrap');
137
138        var $currentID = '#'+$_this.attr('id'),
139            $navs = $_this.data('navs'),
140            $dots = $_this.data('dots'),
141            $autoplay = $_this.data('autoplay');
142            var pfy_post_slider = $( $currentID );
143        pfy_post_slider.owlCarousel({
144            items:1,
145            loop:true,
146            nav:$navs,
147            dots:$dots,
148            autoplay:$autoplay,
149            autoplayTimeout:5000,
150            smartSpeed:1000,
151            animateOut: 'fadeOut',
152            navText:["<i class='fal fa-angle-left'></i>", "<i class='fal fa-angle-right'></i>"],
153        })
154    };
155
156    $('.pfy-post-thumb-gall').owlCarousel({
157        items:1,
158        lazyLoad:true,
159        loop:true,
160        autoplayTimeout:5000,
161        smartSpeed:1000,
162        nav:true,
163        dots:false,
164        animateOut: 'fadeOut',
165        navText:["<i class='fas fa-caret-left'></i>", "<i class='fas fa-caret-right'></i>"],
166    });
167
168		if(benqu_ajax.is_rtl ==  true) {
169			var $breakingowl = $('.breaking-headline-active').owlCarousel({
170					rtl:true,
171					items:1,
172					lazyLoad:true,
173					loop:true,
174					smartSpeed:1500,
175					nav:false,
176					autoplay:true,
177					dots:false
178			});
179			$breakingowl.trigger('refresh.owl.carousel');
180		} else {
181			$('.breaking-headline-active').owlCarousel({
182					items:1,
183					lazyLoad:true,
184					loop:true,
185					smartSpeed:1500,
186					nav:false,
187					autoplay:true,
188					dots:false
189			});
190		}
191
192    /**
193     * Post Grid Slider
194     */   
195     function pfyPostGridSliderActive( $scope, $ ){     
196        var $_this = $scope.find('.pfy-post-grid-carousel');
197        var $currentID = '#'+$_this.attr('id'),
198            $navs = $_this.data('navs'),
199            $dots = $_this.data('dots'),
200            $autoplay = $_this.data('autoplay');
201            var pfy_post_car = $( $currentID );
202            pfy_post_car.owlCarousel({
203            loop:true,
204            nav:$navs,
205            dots:$dots,
206            autoplay:$autoplay,
207            autoplayTimeout:4000,
208            smartSpeed:1000,
209            responsive:{
210                0:{
211                    items:1,
212                },
213                600:{
214                    items:2,
215                },
216                1000:{
217                    items:3,
218                },
219                1500:{
220                    items:4
221                },
222                1600:{
223                    items:5
224                }
225            }
226        })
227    };
228    /**
229     * Post Grid Slider
230     */   
231     function bnqPostOverlayStyle( $scope, $ ){     
232        var $_this = $scope.find('.pfy-post-over-carousel');
233        var $currentID = '#'+$_this.attr('id'),
234            $navs = $_this.data('navs'),
235            $dots = $_this.data('dots'),
236            $autoplay = $_this.data('autoplay');
237            var pfy_post_car = $( $currentID );
238            pfy_post_car.owlCarousel({
239            loop:true,
240            nav:$navs,
241            dots:$dots,
242            margin:24,
243            autoplay:$autoplay,
244            autoplayTimeout:4000,
245            smartSpeed:1000,
246            responsive:{
247                0:{
248                    items:1,
249                },
250                600:{
251                    items:2,
252                },
253                1000:{
254                    items:3,
255                },
256                1500:{
257                    items:3
258                },
259                1600:{
260                    items:4
261                }
262            }
263        })
264    };
265    /**
266     * Post Grid Slider Two
267     */   
268     function bnqPostGridSliderActive( $scope, $ ){     
269        var $_this = $scope.find('.bnq-post-grid-carousel');
270        var $currentID = '#'+$_this.attr('id'),
271            $navs = $_this.data('navs'),
272            $dots = $_this.data('dots'),
273            $autoplay = $_this.data('autoplay');
274            var pfy_post_car = $( $currentID );
275            pfy_post_car.owlCarousel({
276            loop:true,
277            nav:$navs,
278            dots:$dots,
279            autoplay:$autoplay,
280            autoplayTimeout:4000,
281            smartSpeed:1000,
282            responsive:{
283                0:{
284                    items:1,
285                },
286                600:{
287                    items:2,
288                },
289                1000:{
290                    items:3,
291                },
292                1500:{
293                    items:4
294                },
295                1600:{
296                    items:5
297                }
298            }
299        })
300    };
301
302
303    function pfyPostTabActive( $scope, $ ){          
304        const $tabsToDropdown = $(".tabs-to-dropdown");
305        function generateDropdownMarkup(container) {
306        const $navWrapper = container.find(".nav-wrapper");
307        const $navPills = container.find(".nav-pills");
308        const firstTextLink = $navPills.find("li:first-child a").text();
309        const $items = $navPills.find("li");
310        const markup = `
311            <div class="dropdown">
312            <button class="btn dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
313                ${firstTextLink}
314            </button>
315            <ul class="dropdown-menu"  aria-labelledby="dropdownMenuButton1"> 
316                ${generateDropdownLinksMarkup($items)}
317            </ul>
318            </div>
319        `;
320        $navWrapper.prepend(markup);
321        }
322
323        function generateDropdownLinksMarkup(items) {
324        let markup = "";
325        items.each(function () {
326            const textLink = $(this).find("a").text();
327            markup += `<a class="dropdown-item" href="#">${textLink}</a>`;
328        });
329
330        return markup;
331        }
332
333        function showDropdownHandler(e) {
334        // works also
335        //const $this = $(this);
336        const $this = $(e.target);
337        const $dropdownToggle = $this.find(".dropdown-toggle");
338        const dropdownToggleText = $dropdownToggle.text().trim();
339        const $dropdownMenuLinks = $this.find(".dropdown-menu a");
340        const dNoneClass = "d-none";
341        $dropdownMenuLinks.each(function () {
342            const $this = $(this);
343            if ($this.text() == dropdownToggleText) {
344            $this.addClass(dNoneClass);
345            } else {
346            $this.removeClass(dNoneClass);
347            }
348        });
349        }
350
351        function clickHandler(e) {
352        e.preventDefault();
353        const $this = $(this);
354        const index = $this.index();
355        const text = $this.text();
356        $this.closest(".dropdown").find(".dropdown-toggle").text(`${text}`);
357        $this
358            .closest($tabsToDropdown)
359            .find(`.nav-pills li:eq(${index}) a`)
360            .tab("show");
361        }
362
363        function shownTabsHandler(e) {
364        // works also
365        //const $this = $(this);
366        const $this = $(e.target);
367        const index = $this.parent().index();
368        const $parent = $this.closest($tabsToDropdown);
369        const $targetDropdownLink = $parent.find(".dropdown-menu a").eq(index);
370        const targetDropdownLinkText = $targetDropdownLink.text();
371        $parent.find(".dropdown-toggle").text(targetDropdownLinkText);
372        }
373
374        $tabsToDropdown.each(function () {
375        const $this = $(this);
376        const $pills = $this.find('a[data-toggle="pill"]');
377
378        generateDropdownMarkup($this);
379
380        const $dropdown = $this.find(".dropdown");
381        const $dropdownLinks = $this.find(".dropdown-menu a");
382
383        $dropdown.on("show.bs.dropdown", showDropdownHandler);
384        $dropdownLinks.on("click", clickHandler);
385        $pills.on("shown.bs.tab", shownTabsHandler);
386        });
387
388    }
389
390    $('.pfy-video-popup').magnificPopup({
391        type: 'iframe',
392        mainClass: 'mfp-fade',
393        fixedContentPos: false
394    });
395
396    /**
397     * Ajax Post Load More Button
398     * @param {*} $scope 
399     * @param {*} $ 
400     */
401    
402    function pfyAjaxLoadmoreMasonryMasonry( $scope, $ ){
403        var containerBricks = $('.masonry');
404
405        containerBricks.imagesLoaded(function () {
406            containerBricks.masonry({
407                itemSelector: '.masonry__brick',
408                percentPosition: true,
409                resize: true
410            });
411        });
412
413
414        // layout Masonry after each image loads
415        containerBricks.imagesLoaded().progress( function() {
416            containerBricks.masonry('layout');
417        });
418    }
419
420    if($('.wow').length){
421        var wow = new WOW(
422        {
423            boxClass:     'wow',
424            animateClass: 'animated',
425            offset:       0,
426            mobile:       true,
427            live:         true
428        }
429        );
430        wow.init();
431    }
432
433    /**
434     * Post List Carousel
435     * @param {*} $scope 
436     * @param {*} $ 
437     */
438    function pfyPostListActive($scope, $) {
439		$('.post-list-carousel').slick({
440			rows: 4,
441			dots: false,
442			speed: 1500,
443			arrows: true,
444			infinite: true,
445			slidesToShow: 1,
446			slidesToScroll: 1,
447            autoplay:true,
448            nextArrow: '<button type="button" class="slick-next"><i class="far fa-angle-right"></i></button>',
449            prevArrow: '<button type="button" class="slick-prev"><i class="far fa-angle-left"></i></button>',
450			responsive: [
451			{
452				breakpoint: 1024,
453				settings: {
454					slidesToShow: 1,
455					slidesToScroll: 1,
456					infinite: true,
457				}
458			},
459			{
460				breakpoint: 800,
461				settings: {
462					slidesToShow: 1,
463					slidesToScroll: 1
464				}
465			},
466			{
467				breakpoint: 799,
468				settings: {
469					slidesToShow: 1,
470					slidesToScroll: 1
471				}
472			},
473			{
474				breakpoint: 600,
475				settings: {
476					slidesToShow: 1,
477					slidesToScroll: 1
478				}
479			},
480			{
481				breakpoint: 599,
482				settings: {
483					slidesToShow: 1,
484					slidesToScroll: 1
485				}
486			},
487			{
488				breakpoint: 500,
489				settings: {
490					slidesToShow: 1,
491					slidesToScroll: 1
492				}
493			}
494			]
495		});
496	}
497
498    
499
500    function cookiesClose() {
501        var cookieBox = $(".bnq__cookie_area")
502        var acceptBtn = $(".bnq__cookie_area .bnq__cookie_btn");
503
504        var localValue = localStorage.getItem("button");
505
506        if(localValue === "true") {
507            cookieBox.css({
508                "display": "none"
509            });
510        }
511
512        acceptBtn.on("click", function(e) {
513            cookieBox.addClass("bnq__remmove_cookies_area");
514            localStorage.button = true;
515            return false;
516        })
517    }
518    
519    /*==========================================================================
520        WHEN DOCUMENT LOADING
521    ==========================================================================*/
522	$(window).on('load', function() {
523		if($(".bnq__cookie_area").length) {
524            cookiesClose();
525        }
526	});
527    /**
528     * newsletter popup
529     */
530     function newsletterPopup() {
531        var newsletter = $(".bnqu__popup_wrap");
532        var newsletterClose = $(".newsletter-close-btn");
533
534        var test = localStorage.input === 'true'? true: false;
535        $(".show-message").prop('checked', test || false);
536
537        var localValue = localStorage.getItem("input");
538
539        //console.log(localValue);
540
541        if(localValue === "true") {
542            newsletter.css({
543                "display": "none"
544            });                
545        }
546
547        newsletter.addClass("active-newsletter-popup");
548
549        newsletterClose.on("click", function(e) {
550            newsletter.removeClass("active-newsletter-popup");
551            return false;
552        })
553
554        $(".show-message").on('change', function() {
555            localStorage.input = $(this).is(':checked');
556        });
557    }
558    if($(".bnqu__popup_wrap").length) {
559
560        setTimeout(function() {
561            newsletterPopup();
562        },"4000");
563    }
564
565    /* Masonry
566    * ---------------------------------------------------- */ 
567
568    /**
569    Reading Progrees
570    */
571    
572    function readingProgressBar(){
573        if($('#pfy_reading_progress').length){
574            let processScroll = () => {
575                let docElem = document.documentElement, 
576                docBody = document.body,
577                scrollTop = docElem['scrollTop'] || docBody['scrollTop'],
578                    scrollBottom = (docElem['scrollHeight'] || docBody['scrollHeight']) - window.innerHeight,
579                scrollPercent = scrollTop / scrollBottom * 100 + '%';
580                
581                // console.log(scrollTop + ' / ' + scrollBottom + ' / ' + scrollPercent);
582                
583                document.getElementById("pfy_reading_progress").style.setProperty("--scrollAmount", scrollPercent); 
584            }
585            
586            document.addEventListener('scroll', processScroll);
587        }
588    }
589    readingProgressBar();
590
591    $(window).on("load", function () {
592        $(".benqu_preloader").fadeOut(800);
593    });
594
595    $(window).on('scroll', function() {
596		var scrolled = $(window).scrollTop();
597		if (scrolled > 300) $('.back-top-btn').addClass('active');
598		if (scrolled < 300) $('.back-top-btn').removeClass('active');
599	});
600	$('.back-top-btn').on('click', function() {
601		$('html, body').animate(
602			{
603				scrollTop: '0'
604			},
605			1200
606		);
607	});
608
609    function benquLoadMore($scope, $) {
610        var $container = $scope.find('.benqu-post-grid-loadmore');
611        if ($container.length > 0) {
612           $container.on('click',function(event){
613              event.preventDefault();
614
615              var $that = $(this);
616              var ajaxjsondata = $that.data('json_grid_meta');
617              var benqu_json_data = Object (ajaxjsondata);
618
619              var contentwrap = $scope.find('.grid-loadmore-content'), // item contentwrap
620                 postperpage = parseInt(benqu_json_data.posts_per_page), // post per page number
621                 showallposts = parseInt(benqu_json_data.total_post); // total posts count
622
623                 var items = contentwrap.find('.pfy-grid-item'),
624                 totalpostnumber = parseInt(items.length),
625                 paged =  parseInt( totalpostnumber / postperpage ) + 1; // paged number
626
627                 $.ajax({
628                    url: benqu_ajax.ajax_url,
629                    type: 'POST',
630                    data: {
631                       action: 'benqu_post_ajax_loading',
632                       ajax_json_data: ajaxjsondata,
633                       paged:paged
634                    },
635                    beforeSend: function(){
636
637                       $('<i class="fa fa-spinner fa-spin" style="margin-left:10px"></i>').appendTo( "#benqu-post-grid-loadmore" ).fadeIn(100);
638                    },
639                    complete:function(){
640                       $scope.find('.benqu-post-grid-loadmore .fa-spinner ').remove();
641                    }
642                 })
643
644                 .done(function(data) {
645
646                       var $pstitems = $(data);
647                       $scope.find('.grid-loadmore-content').append( $pstitems );
648                       var newLenght  = contentwrap.find('.pfy-grid-item').length;
649
650                       if(showallposts <= newLenght){
651                          $scope.find('.benqu-post-grid-loadmore').fadeOut(300,function(){
652                             $scope.find('.benqu-post-grid-loadmore').remove();
653                          });
654                       }
655
656                 })
657
658                 .fail(function() {
659                    $scope.find('.benqu-post-grid-loadmore').remove();
660                 });
661
662           });
663     }
664
665
666     }
667
668
669     if ($(".ajax-scroll-post").length > 0) {
670        var onScrollPagi = true;
671        var current_post = 1;
672        $(window).scroll(function () {
673
674            if (!onScrollPagi) return;
675
676            var bottomOffset = 1900; // the distance (in px) from the page bottom when you want to load more posts 
677
678            if (current_post >= benqu_ajax.post_scroll_limit) {
679                onScrollPagi = false;
680                return;
681            }
682
683            if ($(document).scrollTop() > ($(document).height() - bottomOffset) && onScrollPagi == true) {
684                let cat_ids = $('input#benqu-cat-ids').val();
685                $.ajax({
686                    url: benqu_ajax.ajax_url,
687                    data: {
688                        action: 'benqu_single_scroll_post',
689                        nonce: benqu_ajax.nonce,
690                        current_post: current_post,
691                        cat_ids
692                    },
693                    type: 'POST',
694                    dataType: 'json',
695                    beforeSend: function () {
696                        onScrollPagi = false;
697                    },
698                    success: function (resp) {
699                        if (resp.success) {
700                            $('.ajax-scroll-post').append(resp.data);
701                            current_post++;
702                            onScrollPagi = true;
703                        }
704                    }
705                });
706            }
707        });
708    }
709
710        
711        
712
713    $(window).on('elementor/frontend/init', function () {
714        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-slider.default', pfyPostSliderActive);
715				elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-article-slider.default', pfyPostArticleSliderActive);
716        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-grid-carousel.default', pfyPostGridSliderActive);
717        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-tabs.default', pfyPostTabActive);
718        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-tabs-v2.default', pfyPostTabActive);
719        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-masonry.default', pfyAjaxLoadmoreMasonryMasonry);
720        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-list-caro.default', pfyPostListActive);
721        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-grid-carousel-v2.default', bnqPostGridSliderActive);
722        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-ajax-loadmore-grid.default', benquLoadMore);
723        elementorFrontend.hooks.addAction('frontend/element_ready/benqu-post-overl-carousel.default', bnqPostOverlayStyle);
724    });
725})(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.