woo.js (4280B)
1 (function ($) { 2 3 var addCloseCartBind = function ($cart, $cart_button, $menu) { 4 $('body').on('mouseover.ope-woo', function (event) { 5 6 var $target = $(event.target); 7 var related = isHeaderCartRelated($target, $cart, $cart_button) || $target.is($menu); 8 if (!related) { 9 $('body').off('mouseover.ope-woo'); 10 $cart.fadeOut(); 11 } 12 13 }); 14 }; 15 16 function setHeaderTopHeight() { 17 $('.header-wrapper .header,.header-wrapper .header-homepage').css({ 18 'padding-top': $('.header-top').height() 19 }); 20 } 21 22 jQuery(document).ready(function () { 23 24 var $menu = jQuery('#main_menu'); 25 var $cart_button = $menu.find('li.materialis-menu-cart'); 26 var $cart = jQuery('.materialis-woo-header-cart:first'); 27 positionateWooCartItem($menu, $cart_button, $cart); 28 addCloseCartButton($cart); 29 30 $cart_button.children('a').on('touchstart', function (e) { 31 'use strict'; 32 if (!$cart.is(':visible')) { 33 e.preventDefault(); 34 showCart($cart, $cart_button, 'absolute'); 35 } 36 else { 37 window.location = $(this).attr('href'); 38 } 39 }); 40 41 42 $('.add_to_cart_button.product_type_simple').click(function() { 43 44 var isChecked = $(this).find('i').length; 45 if(!isChecked) { 46 $(this).append('<i class="mdi mdi-check"></i>'); 47 } 48 49 }); 50 51 var storeNotice = $('.woocommerce-store-notice'); 52 if(storeNotice.length) { 53 $('.header-top').prepend(storeNotice[0].outerHTML); 54 storeNotice.remove(); 55 setTimeout(setHeaderTopHeight, 30); 56 } 57 58 }); 59 60 $('.woocommerce-product-gallery__wrapper .woocommerce-product-gallery__image:eq(0) .wp-post-image').on('load', function () { 61 var $image = $(this); 62 63 if ($image) { 64 setTimeout(function () { 65 var setHeight = $image.closest('.woocommerce-product-gallery__image').height(); 66 var $viewport = $image.closest('.flex-viewport'); 67 68 if (setHeight && $viewport) { 69 $viewport.height(setHeight); 70 } 71 }, 500); 72 } 73 }).each(function () { 74 if (this.complete) { 75 $(this).load(); 76 } 77 }); 78 79 function addCloseCartButton($cart) { 80 81 $cart.prepend('<a href="#" class="close-mini-cart small"><i class="mdi mdi-close"></i></a>'); 82 83 $('.close-mini-cart').click(function () { 84 $('body').off('mouseover.ope-woo'); 85 $cart.fadeOut(); 86 }); 87 88 } 89 90 function positionateWooCartItem($menu, $cart_button, $cart) { 91 92 $menu.parent().append($cart); 93 var $menuItems = $menu.find('li').not($cart_button); 94 95 $cart_button.off().on('mouseover', function (event) { 96 97 if ($cart.children().length === 0) { 98 return; 99 } 100 101 $menuItems.trigger('mouseleave'); 102 103 addCloseCartBind($cart, $cart_button, $menu); 104 showCart($cart, $cart_button); 105 106 }); 107 108 } 109 110 function showCart($cart, $cart_button) { 111 112 113 if ($('body').is('.woocommerce-cart') || $('body').is('.woocommerce-checkout')) { 114 return; 115 } 116 117 var top = $cart_button.offset().top + $cart_button.outerHeight() - $cart_button.closest('div').offset().top ; 118 var position = /*$menu.closest('[data-sticky]') ? "fixed" :*/ "absolute"; 119 120 if ($cart_button.offset().left < $cart.outerWidth()) { 121 var leftPosition = $cart_button.offset().left + $cart.outerWidth() + 12; 122 } 123 else { 124 var leftPosition = $cart_button.offset().left + $cart_button.width() + 5; 125 } 126 127 $cart.css({ 128 'position': position, 129 'z-index': '100000', 130 'top': top, 131 'left': leftPosition, 132 }); 133 $cart.fadeIn(); 134 135 } 136 137 function isHeaderCartRelated($target, $cart, $cart_button) { 138 var isMenuButtoRelated = $.contains($cart_button[0], $target[0]) || $target.is($cart_button); 139 var isCartContentRelated = $.contains($cart[0], $target[0]) || $target.is($cart); 140 141 return (isMenuButtoRelated || isCartContentRelated); 142 } 143 144 145 })(jQuery);