ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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);