1(function ($) { 2 "use strict"; 3 /*================================= 4 JS Index Here 5 ==================================*/ 6 /* 7 01. On Load Function 8 02. Preloader 9 03. Mobile Menu Active 10 04. Sticky fix 11 05. Scroll To Top 12 06. Set Background Image Color & Mask 13 07. Global Slider 14 08. Custom Animaiton For Slider 15 09. Ajax Contact Form 16 10. Search Box Popup 17 11. Popup Sidemenu 18 12. Magnific Popup 19 13. Section Position 20 14. Filter 21 15. Counter Up 22 16. th Tab 23 17. Shape Mockup 24 18. Progress Bar Animation 25 19. Price Slider 26 20. Tilt Active 27 21. Indicator 28 22. Circle Progress 29 00. Woocommerce Toggle 30 00. Right Click Disable 31 */ 32 /*================================= 33 JS Index End 34 ==================================*/ 35 /* 36 37 /*---------- 01. On Load Function ----------*/ 38 $(window).on("load", function () { 39 $(".preloader").fadeOut(); 40 $(".slick-slider").slick("refresh"); 41 }); 42 43 $(window).on('resize', function () { 44 $(".slick-slider").slick("refresh"); 45 }); 46 47 /*---------- 02. Preloader ----------*/ 48 if ($(".preloader").length > 0) { 49 $(".preloaderCls").each(function () { 50 $(this).on("click", function (e) { 51 e.preventDefault(); 52 $(".preloader").css("display", "none"); 53 }); 54 }); 55 } 56 57 /*---------- 03. Mobile Menu Active ----------*/ 58 $.fn.thmobilemenu = function (options) { 59 var opt = $.extend( 60 { 61 menuToggleBtn: ".th-menu-toggle", 62 bodyToggleClass: "th-body-visible", 63 subMenuClass: "th-submenu", 64 subMenuParent: "th-item-has-children", 65 subMenuParentToggle: "th-active", 66 meanExpandClass: "th-mean-expand", 67 appendElement: '<span class="th-mean-expand"></span>', 68 subMenuToggleClass: "th-open", 69 toggleSpeed: 400, 70 }, 71 options 72 ); 73 74 return this.each(function () { 75 var menu = $(this); // Select menu 76 77 // Menu Show & Hide 78 function menuToggle() { 79 menu.toggleClass(opt.bodyToggleClass); 80 81 // collapse submenu on menu hide or show 82 var subMenu = "." + opt.subMenuClass; 83 $(subMenu).each(function () { 84 if ($(this).hasClass(opt.subMenuToggleClass)) { 85 $(this).removeClass(opt.subMenuToggleClass); 86 $(this).css("display", "none"); 87 $(this).parent().removeClass(opt.subMenuParentToggle); 88 } 89 }); 90 } 91 92 // Class Set Up for every submenu 93 menu.find("li").each(function () { 94 var submenu = $(this).find("ul"); 95 submenu.addClass(opt.subMenuClass); 96 submenu.css("display", "none"); 97 submenu.parent().addClass(opt.subMenuParent); 98 submenu.prev("a").append(opt.appendElement); 99 submenu.next("a").append(opt.appendElement); 100 }); 101 102 // Toggle Submenu 103 function toggleDropDown($element) { 104 if ($($element).next("ul").length > 0) { 105 $($element).parent().toggleClass(opt.subMenuParentToggle); 106 $($element).next("ul").slideToggle(opt.toggleSpeed); 107 $($element).next("ul").toggleClass(opt.subMenuToggleClass); 108 } else if ($($element).prev("ul").length > 0) { 109 $($element).parent().toggleClass(opt.subMenuParentToggle); 110 $($element).prev("ul").slideToggle(opt.toggleSpeed); 111 $($element).prev("ul").toggleClass(opt.subMenuToggleClass); 112 } 113 } 114 115 // Submenu toggle Button 116 var expandToggler = "." + opt.meanExpandClass; 117 $(expandToggler).each(function () { 118 $(this).on("click", function (e) { 119 e.preventDefault(); 120 toggleDropDown($(this).parent()); 121 }); 122 }); 123 124 // Menu Show & Hide On Toggle Btn click 125 $(opt.menuToggleBtn).each(function () { 126 $(this).on("click", function () { 127 menuToggle(); 128 }); 129 }); 130 131 // Hide Menu On out side click 132 menu.on("click", function (e) { 133 e.stopPropagation(); 134 menuToggle(); 135 }); 136 137 // Stop Hide full menu on menu click 138 menu.find("div").on("click", function (e) { 139 e.stopPropagation(); 140 }); 141 }); 142 }; 143 144 $(".th-menu-wrapper").thmobilemenu(); 145 146 /*---------- 03. Sidebar Menu Active ----------*/ 147 $.fn.thmobilemenu2 = function (options) { 148 var opt = $.extend( 149 { 150 menuToggleBtn2: ".th-menu-toggle2", 151 bodyToggleClass2: "th-body-visible2", 152 toggleSpeed: 400, 153 }, 154 options 155 ); 156 157 return this.each(function () { 158 var menu = $(this); // Select menu 159 160 function menuToggle2() { 161 menu.toggleClass(opt.bodyToggleClass2); 162 } 163 // Menu Show & Hide On Toggle Btn click 164 $(opt.menuToggleBtn2).each(function () { 165 $(this).on("click", function () { 166 menuToggle2(); 167 }); 168 }); 169 170 // Hide Menu On out side click 171 menu.on("click", function (e) { 172 e.stopPropagation(); 173 menuToggle2(); 174 }); 175 176 // Stop Hide full menu on menu click 177 menu.find("div").on("click", function (e) { 178 e.stopPropagation(); 179 }); 180 }); 181 }; 182 183 $(".th-menu-wrapper2").thmobilemenu2(); 184 185 $(".th-menu-wrapper2 .th-mobile-menu2 ul li a").on("click", function (e) { 186 e.preventDefault(); 187 $('.th-menu-wrapper2').removeClass('th-body-visible2'); 188 }); 189 190 191 /*---------- 04. Sticky fix ----------*/ 192// $(window).scroll(function () { 193// var topPos = $(this).scrollTop(); 194// if (topPos > 1) { 195// $('.sticky-wrapper').addClass('stick-top'); 196// } else { 197// $('.sticky-wrapper').removeClass('stick-top') 198// } 199// }); 200 201 /*----------- 22. One Page Nav ----------*/ 202 function onePageNav(element) { 203 if ($(element).length > 0) { 204 $(element).each(function () { 205 var link = $(this).find('a'); 206 $(this).find(link).each(function () { 207 $(this).on('click', function () { 208 var target = $(this.getAttribute('href')); 209 if (target.length) { 210 event.preventDefault(); 211 $('html, body').stop().animate({ 212 scrollTop: target.offset().top - 10 213 }, 1000); 214 }; 215 216 }); 217 }); 218 }) 219 } 220 }; 221 onePageNav('.onepage-nav'); 222 223 /*---------- 05. Scroll To Top ----------*/ 224 // progressAvtivation 225 if($('.scroll-top').length > 0) { 226 227 var scrollTopbtn = document.querySelector('.scroll-top'); 228 var progressPath = document.querySelector('.scroll-top path'); 229 var pathLength = progressPath.getTotalLength(); 230 progressPath.style.transition = progressPath.style.WebkitTransition = '
230none'; 231 progressPath.style.strokeDasharray = pathLength + ' ' + pathLength; 232 progressPath.style.strokeDashoffset = pathLength; 233 progressPath.getBoundingClientRect(); 234 progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear'; 235 var updateProgress = function () { 236 var scroll = $(window).scrollTop(); 237 var height = $(document).height() - $(window).height(); 238 var progress = pathLength - (scroll * pathLength / height); 239 progressPath.style.strokeDashoffset = progress; 240 } 241 updateProgress(); 242 $(window).scroll(updateProgress); 243 var offset = 50; 244 var duration = 750; 245 jQuery(window).on('scroll', function() { 246 if (jQuery(this).scrollTop() > offset) { 247 jQuery(scrollTopbtn).addClass('show'); 248 } else { 249 jQuery(scrollTopbtn).removeClass('show'); 250 } 251 }); 252 jQuery(scrollTopbtn).on('click', function(event) { 253 event.preventDefault(); 254 jQuery('html, body').animate({scrollTop: 0}, duration); 255 return false; 256 }) 257 } 258 259 /*---------- 06. Set Background Image Color & Mask ----------*/ 260 if ($("[data-bg-src]").length > 0) { 261 $("[data-bg-src]").each(function () { 262 var src = $(this).attr("data-bg-src"); 263 $(this).css("background-image", "url(" + src + ")"); 264 $(this).removeAttr("data-bg-src").addClass("background-image"); 265 }); 266 } 267 268 if ($('[data-bg-color]').length > 0) { 269 $('[data-bg-color]').each(function () { 270 var color = $(this).attr('data-bg-color'); 271 $(this).css('background-color', color); 272 $(this).removeAttr('data-bg-color'); 273 }); 274 }; 275 276 if ($('[data-mask-src]').length > 0) { 277 $('[data-mask-src]').each(function () { 278 var mask = $(this).attr('data-mask-src'); 279 $(this).css({ 280 'mask-image': 'url(' + mask + ')', 281 '-webkit-mask-image': 'url(' + mask + ')' 282 }); 283 $(this).addClass('bg-mask'); 284 $(this).removeAttr('data-mask-src'); 285 }); 286 }; 287 288 289 /*---------- 10. Search Box Popup ----------*/ 290 function popupSarchBox($searchBox, $searchOpen, $searchCls, $toggleCls) { 291 $($searchOpen).on("click", function (e) { 292 e.preventDefault(); 293 $($searchBox).addClass($toggleCls); 294 }); 295 $($searchBox).on("click", function (e) { 296 e.stopPropagation(); 297 $($searchBox).removeClass($toggleCls); 298 }); 299 $($searchBox) 300 .find("form") 301 .on("click", function (e) { 302 e.stopPropagation(); 303 $($searchBox).addClass($toggleCls); 304 }); 305 $($searchCls).on("click", function (e) { 306 e.preventDefault(); 307 e.stopPropagation(); 308 $($searchBox).removeClass($toggleCls); 309 }); 310 } 311 popupSarchBox( 312 ".popup-search-box", 313 ".searchBoxToggler", 314 ".searchClose", 315 "show" 316 ); 317 318 /*---------- 11. Popup Sidemenu ----------*/ 319 function popupSideMenu($sideMenu, $sideMunuOpen, $sideMenuCls, $toggleCls) { 320 // Sidebar Popup 321 $($sideMunuOpen).on('click', function (e) { 322 e.preventDefault(); 323 $($sideMenu).addClass($toggleCls); 324 }); 325 $($sideMenu).on('click', function (e) { 326 e.stopPropagation(); 327 $($sideMenu).removeClass($toggleCls) 328 }); 329 var sideMenuChild = $sideMenu + ' > div'; 330 $(sideMenuChild).on('click', function (e) { 331 e.stopPropagation(); 332 $($sideMenu).addClass($toggleCls) 333 }); 334 $($sideMenuCls).on('click', function (e) { 335 e.preventDefault(); 336 e.stopPropagation(); 337 $($sideMenu).removeClass($toggleCls); 338 }); 339 }; 340 popupSideMenu('.sidemenu-wrapper', '.sideMenuToggler', '.sideMenuCls', 'show'); 341 342 /*----------- 12. Magnific Popup ----------*/ 343 /* magnificPopup img view */ 344 $(".popup-image").magnificPopup({ 345 type: "image", 346 mainClass: 'mfp-zoom-in', 347 removalDelay: 260, 348 gallery: { 349 enabled: true, 350 }, 351 }); 352 353 /* magnificPopup video view */ 354 $(".popup-video").magnificPopup({ 355 type: "iframe", 356 mainClass: 'mfp-zoom-in', 357 removalDelay: 260, 358 }); 359 360 /* magnificPopup video view */ 361 $(".popup-content").magnificPopup({ 362 type: "inline", 363 midClick: true, 364 }); 365 366 $(".popup-content").on("click", function () { 367 $(".slick-slider").slick("refresh"); 368 }); 369 370 371 372 /*---------- 13. Section Position ----------*/ 373 // Interger Converter 374 function convertInteger(str) { 375 return parseInt(str, 10); 376 } 377 378 $.fn.sectionPosition = function (mainAttr, posAttr) { 379 $(this).each(function () { 380 var section = $(this); 381 382 function setPosition() { 383 var sectionHeight = Math.floor(section.height() / 2), // Main Height of section 384 posData = section.attr(mainAttr), // where to position 385 posFor = section.attr(posAttr), // On Which section is for positioning 386 topMark = "top-half", // Pos top 387 bottomMark = "bottom-half", // Pos Bottom 388 parentPT = convertInteger($(posFor).css("padding-top")), // Default Padding of parent 389 parentPB = convertInteger($(posFor).css("padding-bottom")); // Default Padding of parent 390 391 if (posData === topMark) { 392 $(posFor).css( 393 "padding-bottom", 394 parentPB + sectionHeight + "px" 395 ); 396 section.css("margin-top", "-" + sectionHeight + "px"); 397 } else if (posData === bottomMark) { 398 $(posFor).css( 399 "padding-top", 400 parentPT + sectionHeight + "px" 401 ); 402 section.css("margin-bottom", "-" + sectionHeight + "px"); 403 } 404 } 405 setPosition(); // Set Padding On Load 406 }); 407 }; 408 409 var postionHandler = "[data-sec-pos]"; 410 if ($(postionHandler).length) { 411 $(postionHandler).imagesLoaded(function () { 412 $(postionHandler).sectionPosition("data-sec-pos", "data-pos-for"); 413 }); 414 } 415 416 /*----------- 14. Filter ----------*/ 417 418 $(".filter-active").imagesLoaded(function () { 419 var $filter = ".filter-active", 420 $filterItem = ".filter-item",
421 $filterMenu = ".filter-menu-active"; 422 423 if ($($filter).length > 0) { 424 var $grid = $($filter).isotope({ 425 itemSelector: $filterItem, 426 filter: "*", 427 masonry: { 428 // use outer width of grid-sizer for columnWidth 429 columnWidth: 1, 430 }, 431 }); 432 433 // filter items on button click 434 $($filterMenu).on("click", "button", function () { 435 var filterValue = $(this).attr("data-filter"); 436 $grid.isotope({ 437 filter: filterValue, 438 }); 439 }); 440 441 // Menu Active Class 442 $($filterMenu).on("click", "button", function (event) { 443 event.preventDefault(); 444 $(this).addClass("active"); 445 $(this).siblings(".active").removeClass("active"); 446 }); 447 } 448 }); 449 450 $(".masonary-active").imagesLoaded(function () { 451 var $filter = ".masonary-active", 452 $filterItem = ".filter-item"; 453 454 if ($($filter).length > 0) { 455 $($filter).isotope({ 456 itemSelector: $filterItem, 457 filter: "*", 458 masonry: { 459 // use outer width of grid-sizer for columnWidth 460 columnWidth: 1, 461 }, 462 }); 463 } 464 }); 465 /*----------- 14. Search Masonary ----------*/ 466 $('.search-active').imagesLoaded(function () { 467 var $filter = '.search-active', 468 $filterItem = '.filter-item'; 469 470 if ($($filter).length > 0) { 471 var $grid = $($filter).isotope({ 472 itemSelector: $filterItem, 473 filter: '*', 474 // masonry: { 475 // // use outer width of grid-sizer for columnWidth 476 // columnWidth: 1 477 // } 478 }); 479 }; 480 }); 481 482 /*----------- 15. Counter Up ----------*/ 483 $(".counter-number").counterUp({ 484 delay: 10, 485 time: 1000, 486 }); 487 488 /*---------- 16. th Tab ----------*/ 489 $.fn.thTab = function (options) { 490 var opt = $.extend( 491 { 492 sliderTab: false, 493 tabButton: "button", 494 }, 495 options 496 ); 497 498 $(this).each(function () { 499 var $menu = $(this); 500 var $button = $menu.find(opt.tabButton); 501 502 // Append indicator 503 $menu.append('<span class="indicator"></span>'); 504 var $line = $menu.find(".indicator"); 505 506 // On Click Button Class Remove and indecator postion set 507 $button.on("click", function (e) { 508 e.preventDefault(); 509 var cBtn = $(this); 510 cBtn.addClass("active").siblings().removeClass("active"); 511 if (opt.sliderTab) { 512 $(slider).slick("slickGoTo", cBtn.data("slide-go-to")); 513 } else { 514 linePos(); 515 } 516 }); 517 518 // Work With slider 519 if (opt.sliderTab) { 520 var slider = $menu.data("themenavfor"); // select slider 521 522 // Select All button and set attribute 523 var i = 0; 524 $button.each(function () { 525 var slideBtn = $(this); 526 slideBtn.attr("data-slide-go-to", i); 527 i++; 528 529 // Active Slide On load > Actived Button 530 if (slideBtn.hasClass("active")) { 531 $(slider).slick( 532 "slickGoTo", 533 slideBtn.data("slide-go-to") 534 ); 535 } 536 537 // Change Indicator On slide Change 538 $(slider).on( 539 "beforeChange", 540 function (event, slick, currentSlide, nextSlide) { 541 $menu 542 .find( 543 opt.tabButton + 544 '[data-slide-go-to="' + 545 nextSlide + 546 '"]' 547 ) 548 .addClass("active") 549 .siblings() 550 .removeClass("active"); 551 linePos(); 552 } 553 ); 554 }); 555 } 556 557 // Indicator Position 558 function linePos() { 559 var $btnActive = $menu.find(opt.tabButton + ".active"), 560 $height = $btnActive.css("height"), 561 $width = $btnActive.css("width"), 562 $top = $btnActive.position().top + "px", 563 $left = $btnActive.position().left + "px"; 564 565 $line.get(0).style.setProperty("--height-set", $height); 566 $line.get(0).style.setProperty("--width-set", $width); 567 $line.get(0).style.setProperty("--pos-y", $top); 568 $line.get(0).style.setProperty("--pos-x", $left); 569 570 if ( 571 $($button).first().position().left == 572 $btnActive.position().left 573 ) { 574 $line 575 .addClass("start") 576 .removeClass("center") 577 .removeClass("end"); 578 } else if (
579 $($button).last().position().left == 580 $btnActive.position().left 581 ) { 582 $line 583 .addClass("end") 584 .removeClass("center") 585 .removeClass("start"); 586 } else { 587 $line 588 .addClass("center") 589 .removeClass("start") 590 .removeClass("end"); 591 } 592 } 593 linePos(); 594 }); 595 }; 596 597 // Call On Load 598 if ($(".testi-card-tab").length) { 599 $(".testi-card-tab").thTab({ 600 sliderTab: true, 601 tabButton: ".tab-btn", 602 }); 603 } 604 605 /*----------- 17. Shape Mockup ----------*/ 606 $.fn.shapeMockup = function () { 607 var $shape = $(this); 608 $shape.each(function () { 609 var $currentShape = $(this), 610 shapeTop = $currentShape.data("top"), 611 shapeRight = $currentShape.data("right"), 612 shapeBottom = $currentShape.data("bottom"), 613 shapeLeft = $currentShape.data("left"); 614 $currentShape 615 .css({ 616 top: shapeTop, 617 right: shapeRight, 618 bottom: shapeBottom, 619 left: shapeLeft, 620 }) 621 .removeAttr("data-top") 622 .removeAttr("data-right") 623 .removeAttr("data-bottom") 624 .removeAttr("data-left") 625 .parent() 626 .addClass("shape-mockup-wrap"); 627 }); 628 }; 629 630 if ($(".shape-mockup")) { 631 $(".shape-mockup").shapeMockup(); 632 } 633 634 /*----------- 18. Progress Bar Animation ----------*/ 635 $('.progress-bar').waypoint(function() { 636 $('.progress-bar').css({ 637 animation: "animate-positive 1.8s", 638 opacity: "1" 639 }); 640 }, { offset: '75%' }); 641 642 /*----------- 19. Price Slider ----------*/ 643 $(".price_slider").slider({ 644 range: true, 645 min: 10, 646 max: 100, 647 values: [10, 75], 648 slide: function (event, ui) { 649 $(".from").text("$" + ui.values[0]); 650 $(".to").text("$" + ui.values[1]); 651 } 652 }); 653 $(".from").text("$" + $(".price_slider").slider("values", 0)); 654 $(".to").text("$" + $(".price_slider").slider("values", 1)); 655 656 /*----------- 20. Tilt Active ----------*/ 657 $('.tilt-active').tilt({ 658 maxTilt: 7, 659 perspective: 1000, 660 }) 661 662 /*----------- 21. Indicator ----------*/ 663 // Indicator 664 $.fn.indicator = function () { 665 var $menu = $(this), 666 $linkBtn = $menu.find("a"), 667 $btn = $menu.find("button"); 668 // Append indicator 669 $menu.append('<span class="indicator"></span>'); 670 var $line = $menu.find(".indicator"); 671 // Check which type button is Available 672 if ($linkBtn.length) { 673 var $currentBtn = $linkBtn; 674 } else if ($btn.length) { 675 var $currentBtn = $btn; 676 } 677 // On Click Button Class Remove 678 $currentBtn.on("click", function (e) { 679 e.preventDefault(); 680 $(this).addClass("active"); 681 $(this).siblings(".active").removeClass("active"); 682 linePos(); 683 }); 684 685 function linePos() { 686 var $btnActive = $menu.find(".active"), 687 $height = $btnActive.css("height"), 688 $width = $btnActive.css("width"), 689 $top = $btnActive.position().top + "px", 690 $left = $btnActive.position().left + "px"; 691 692 $(window).on('resize', function () { 693 $top = $btnActive.position().top + "px", 694 $left = $btnActive.position().left + "px"; 695 }); 696 697 $line.get(0).style.setProperty("--height-set", $height); 698 $line.get(0).style.setProperty("--width-set", $width); 699 $line.get(0).style.setProperty("--pos-y", $top); 700 $line.get(0).style.setProperty("--pos-x", $left); 701 702 } 703 linePos(); 704 }; 705 706 // Call On Load 707 if ($(".indicator-active").length) { 708 $(".indicator-active").indicator(); 709 } 710 711 /*---------- 22. Circle Progress ----------*/ 712 function animateElements() { 713 $('.feature-circle .progressbar').each(function () { 714 var pathColor = $(this).attr('data-path-color'); 715 var elementPos = $(this).offset().top; 716 var topOfWindow = $(window).scrollTop(); 717 var percent = $(this).find('.circle').attr('data-percent'); 718 var percentage = parseInt(percent, 10) / parseInt(100, 10); 719 var animate = $(this).data('animate'); 720 if (elementPos < topOfWindow + $(window).height() - 30 && !animate) { 721 $(this).data('animate', true);
722 $(this).find('.circle').circleProgress({ 723 startAngle: -Math.PI / 2, 724 value: percent / 100, 725 size: 100, 726 thickness: 6, 727 emptyFill: "transparent", 728 lineCap: 'round', 729 fill: { 730 color: pathColor, 731 } 732 }).on('circle-animation-progress', function (event, progress, stepValue) { 733 $(this).find('.circle-num').text((stepValue*100).toFixed(0) + "%"); 734 }).stop(); 735 } 736 }); 737 738 $('.skill-circle .progressbar').each(function () { 739 var elementPos = $(this).offset().top; 740 var topOfWindow = $(window).scrollTop(); 741 var percent = $(this).find('.circle').attr('data-percent'); 742 var percentage = parseInt(percent, 10) / parseInt(100, 10); 743 var animate = $(this).data('animate'); 744 if (elementPos < topOfWindow + $(window).height() - 30 && !animate) { 745 $(this).data('animate', true); 746 $(this).find('.circle').circleProgress({ 747 startAngle: -Math.PI / 2, 748 value: percent / 100, 749 size: 100, 750 thickness: 8, 751 emptyFill: "#E0E0E0", 752 lineCap: 'round', 753 fill: { 754 gradient: ["#F11F22", "#F2891D"] 755 } 756 }).on('circle-animation-progress', function (event, progress, stepValue) { 757 $(this).find('.circle-num').text((stepValue*100).toFixed(0) + "%"); 758 }).stop(); 759 } 760 }); 761 } 762 763 // Show animated elements 764 animateElements(); 765 $(window).scroll(animateElements); 766 767 768 // Quantity Plus Minus --------------------------- 769 /*---------- Quantity Added ----------*/ 770 $(document).on('click', '.quantity-plus, .quantity-minus', function(e) { 771 e.preventDefault(); 772 // Get current quantity values 773 var qty = $(this).closest('.quantity, .product-quantity').find('.qty-input'); 774 var val = parseFloat(qty.val()); 775 var max = parseFloat(qty.attr('max')); 776 var min = parseFloat(qty.attr('min')); 777 var step = parseFloat(qty.attr('step')); 778 779 // Change the value if plus or minus 780 if ($(this).is('.quantity-plus')) { 781 if (max && (max <= val)) { 782 qty.val(max); 783 } else { 784 qty.val(val + step); 785 } 786 } else { 787 if (min && (min >= val)) { 788 qty.val(min); 789 } else if (val > 0) { 790 qty.val(val - step); 791 } 792 } 793 $('.cart_table button[name="update_cart"]').prop('disabled', false); 794 }); 795 796 $('.th-blog-carousel').slick({ 797 dots: false, 798 infinite: true, 799 arrows: true, 800 prevArrow: '<button type="button" class="slick-prev slick-arrow" style=""><i class="fal fa-arrow-left"></i></button>', 801 nextArrow: '<button type="button" class="slick-next slick-arrow" style=""><i class="fal fa-arrow-right"></i></button>', 802 autoplay: true, 803 autoplaySpeed: 6000, 804 fade: true, 805 speed: 1000, 806 slidesToShow: 1, 807 slidesToScroll: 1, 808 responsive: [ { 809 breakpoint: 992, 810 settings: { 811 slidesToShow: 1, 812 arrows: false, 813 } 814 } 815 ] 816 }); 817 818 $('.related-products-carousel').slick({ 819 dots: false, 820 infinite: true, 821 arrows: true, 822 prevArrow: '<button type="button" class="slick-prev slick-arrow" style=""><i class="fal fa-arrow-left"></i></button>', 823 nextArrow: '<button type="button" class="slick-next slick-arrow" style=""><i class="fal fa-arrow-right"></i></button>', 824 autoplay: true, 825 autoplaySpeed: 6000, 826 fade: false, 827 speed: 1000, 828 slidesToShow: 4, 829 slidesToScroll: 1, 830 responsive: [ { 831 breakpoint: 1500, 832 settings: { 833 slidesToShow: 3,
834 arrows: false, 835 } 836 },{ 837 breakpoint: 1200, 838 settings: { 839 slidesToShow: 3, 840 arrows: false, 841 } 842 },{ 843 breakpoint: 992, 844 settings: { 845 slidesToShow: 2, 846 arrows: false, 847 } 848 }, { 849 breakpoint: 768, 850 settings: { 851 slidesToShow: 2, 852 arrows: false, 853 } 854 } 855 ] 856 }); 857 858 $('.product-img-slider').slick({ 859 dots: true, 860 infinite: true, 861 arrows: false, 862 autoplay: true, 863 autoplaySpeed: 6000, 864 fade: false, 865 speed: 1000, 866 slidesToShow: 1, 867 slidesToScroll: 1, 868 869 }); 870 871 872 873 874 // /*----------- 00. banner-img-move ----------*/ 875 function touches(e){ 876 var x = e.touches ? e.touches[0].clientX : e.clientX, 877 y = e.touches ? e.touches[0].clientY : e.clientY; 878 var w = window.innerWidth / 2; 879 var h = window.innerHeight / 2; 880 881 var l = -(x - w) / (w / 1) - 1; 882 var t = -(y - h) / (h / 1) - 1; 883 884 TweenMax.to($('.banner-anime-img'), 1, { 885 top: t + "%", 886 left: l + "%" 887 }); 888 889 } 890 891 window.addEventListener("mousemove", touches); 892 window.addEventListener("touchstart", touches); 893 window.addEventListener("touchmove", touches); 894 895 896 // /*----------- 00. Right Click Disable ----------*/ 897 // window.addEventListener('contextmenu', function (e) { 898 // // do something here... 899 // e.preventDefault(); 900 // }, false); 901 902 // /*----------- 00. Inspect Element Disable ----------*/ 903 // document.onkeydown = function (e) { 904 // if (event.keyCode == 123) { 905 // return false; 906 // } 907 // if (e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) { 908 // return false; 909 // } 910 // if (e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) { 911 // return false; 912 // } 913 // if (e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) { 914 // return false; 915 // } 916 // if (e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) { 917 // return false; 918 // } 919 // } 920 921})(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.