updated plugin GP Premium version 2.0.3

This commit is contained in:
2021-07-25 23:25:02 +00:00
committed by Gitium
parent d7964b08bd
commit 3ef36355e9
154 changed files with 6153 additions and 9541 deletions

View File

@ -112,13 +112,6 @@
display: none;
}
.woocommerce #content div.product div.images,
.woocommerce div.product div.images,
.woocommerce-page #content div.product div.images,
.woocommerce-page div.product div.images {
width: 100%;
}
.do-quantity-buttons div.quantity {
justify-content: flex-end;
}

View File

@ -1 +1 @@
.woocommerce-product-gallery{margin-right:0}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:none}.woocommerce .woocommerce-ordering select{max-width:100%}.wc-related-upsell-mobile-columns-1 .related ul.products,.wc-related-upsell-mobile-columns-1 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-1 .products{-ms-grid-columns:1fr;grid-template-columns:repeat(1,minmax(0,1fr))}.wc-related-upsell-mobile-columns-2 .related ul.products,.wc-related-upsell-mobile-columns-2 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-2 .products{-ms-grid-columns:1fr 1fr;grid-template-columns:repeat(2,minmax(0,1fr))}.wc-related-upsell-mobile-columns-3 .related ul.products,.wc-related-upsell-mobile-columns-3 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-3 .products{-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:repeat(3,minmax(0,1fr))}.woocommerce ul.products li.product a img{width:auto;margin-left:auto;margin-right:auto}.woocommerce div.product .woocommerce-tabs .panel,.woocommerce div.product .woocommerce-tabs ul.tabs{float:none;width:100%}.woocommerce div.product .woocommerce-tabs .panel{margin-top:20px}.wc-tabs .active a:after{transform:rotate(90deg);padding-right:3px}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%;float:none;margin-right:0}#customer_details+#wc_checkout_add_ons,#order_review,#order_review_heading{width:100%;float:none;margin-right:0}.woocommerce ul.products li.product.woocommerce-image-align-left .wc-product-image,.woocommerce ul.products li.product.woocommerce-image-align-right .wc-product-image{float:none;margin:0}.woocommerce ul.products li.product.woocommerce-image-align-left a .wc-product-image img,.woocommerce ul.products li.product.woocommerce-image-align-right a .wc-product-image img{width:100%}.woocommerce .related ul.products li.product,.woocommerce .up-sells ul.products li.product,.woocommerce-page .related ul.products li.product,.woocommerce-page .up-sells ul.products li.product,.woocommerce-page[class*=columns-] .related ul.products li.product,.woocommerce-page[class*=columns-] .up-sells ul.products li.product,.woocommerce[class*=columns-] .related ul.products li.product,.woocommerce[class*=columns-] .up-sells ul.products li.product{width:100%;margin-left:0;margin-right:0}.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-first,.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-last,.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-first,.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-last{float:none;width:100%}.woocommerce-account .woocommerce-MyAccount-navigation{width:100%}.woocommerce-MyAccount-navigation li.is-active a:after{content:"\e901"}#wc-mini-cart{display:none}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{width:100%}.do-quantity-buttons div.quantity{justify-content:flex-end}.woocommerce div.product .woocommerce-tabs ul.tabs{flex-direction:column}.woocommerce div.product .woocommerce-tabs ul.tabs li{border-left-width:1px}.woocommerce div.product .woocommerce-tabs ul.tabs li:last-child{border-bottom-color:rgba(0,0,0,.08);border-bottom-width:1px}.woocommerce .coupon .button{font-size:14px;padding:10px}.woocommerce .woocommerce-ordering{margin-bottom:0}.add-to-cart-panel{bottom:0;top:auto;transform:translateY(0)!important}.add-to-cart-panel .continue-shopping:not(.has-svg-icon):before{content:"\f00d";font-family:'GP Premium';line-height:1em;width:1.28571429em;text-align:center;display:inline-block;padding:10px}#wc-sticky-cart-panel .quantity,.add-to-cart-panel .continue-shopping-text{display:none}.add-to-cart-panel .continue-shopping{order:5;margin-left:auto;margin-right:0;position:absolute;top:-20px;left:10px;height:50px;width:50px;text-align:center;border-radius:50%;line-height:50px;cursor:pointer}.add-to-cart-panel .continue-shopping .gp-icon{display:block}.add-to-cart-panel .cart,.add-to-cart-panel .product-image{flex-shrink:0}.add-to-cart-panel .product-title{padding-right:20px;margin-left:10px}.add-to-cart-panel .cart-info{margin-right:auto}.add-to-cart-panel .product-price{font-size:13px}.add-to-cart-panel:not(.item-added):not(.show-sticky-add-to-cart){pointer-events:none}
.woocommerce-product-gallery{margin-right:0}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:none}.woocommerce .woocommerce-ordering select{max-width:100%}.wc-related-upsell-mobile-columns-1 .related ul.products,.wc-related-upsell-mobile-columns-1 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-1 .products{-ms-grid-columns:1fr;grid-template-columns:repeat(1,minmax(0,1fr))}.wc-related-upsell-mobile-columns-2 .related ul.products,.wc-related-upsell-mobile-columns-2 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-2 .products{-ms-grid-columns:1fr 1fr;grid-template-columns:repeat(2,minmax(0,1fr))}.wc-related-upsell-mobile-columns-3 .related ul.products,.wc-related-upsell-mobile-columns-3 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-3 .products{-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:repeat(3,minmax(0,1fr))}.woocommerce ul.products li.product a img{width:auto;margin-left:auto;margin-right:auto}.woocommerce div.product .woocommerce-tabs .panel,.woocommerce div.product .woocommerce-tabs ul.tabs{float:none;width:100%}.woocommerce div.product .woocommerce-tabs .panel{margin-top:20px}.wc-tabs .active a:after{transform:rotate(90deg);padding-right:3px}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%;float:none;margin-right:0}#customer_details+#wc_checkout_add_ons,#order_review,#order_review_heading{width:100%;float:none;margin-right:0}.woocommerce ul.products li.product.woocommerce-image-align-left .wc-product-image,.woocommerce ul.products li.product.woocommerce-image-align-right .wc-product-image{float:none;margin:0}.woocommerce ul.products li.product.woocommerce-image-align-left a .wc-product-image img,.woocommerce ul.products li.product.woocommerce-image-align-right a .wc-product-image img{width:100%}.woocommerce .related ul.products li.product,.woocommerce .up-sells ul.products li.product,.woocommerce-page .related ul.products li.product,.woocommerce-page .up-sells ul.products li.product,.woocommerce-page[class*=columns-] .related ul.products li.product,.woocommerce-page[class*=columns-] .up-sells ul.products li.product,.woocommerce[class*=columns-] .related ul.products li.product,.woocommerce[class*=columns-] .up-sells ul.products li.product{width:100%;margin-left:0;margin-right:0}.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-first,.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-last,.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-first,.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-last{float:none;width:100%}.woocommerce-account .woocommerce-MyAccount-navigation{width:100%}.woocommerce-MyAccount-navigation li.is-active a:after{content:"\e901"}#wc-mini-cart{display:none}.do-quantity-buttons div.quantity{justify-content:flex-end}.woocommerce div.product .woocommerce-tabs ul.tabs{flex-direction:column}.woocommerce div.product .woocommerce-tabs ul.tabs li{border-left-width:1px}.woocommerce div.product .woocommerce-tabs ul.tabs li:last-child{border-bottom-color:rgba(0,0,0,.08);border-bottom-width:1px}.woocommerce .coupon .button{font-size:14px;padding:10px}.woocommerce .woocommerce-ordering{margin-bottom:0}.add-to-cart-panel{bottom:0;top:auto;transform:translateY(0)!important}.add-to-cart-panel .continue-shopping:not(.has-svg-icon):before{content:"\f00d";font-family:'GP Premium';line-height:1em;width:1.28571429em;text-align:center;display:inline-block;padding:10px}#wc-sticky-cart-panel .quantity,.add-to-cart-panel .continue-shopping-text{display:none}.add-to-cart-panel .continue-shopping{order:5;margin-left:auto;margin-right:0;position:absolute;top:-20px;left:10px;height:50px;width:50px;text-align:center;border-radius:50%;line-height:50px;cursor:pointer}.add-to-cart-panel .continue-shopping .gp-icon{display:block}.add-to-cart-panel .cart,.add-to-cart-panel .product-image{flex-shrink:0}.add-to-cart-panel .product-title{padding-right:20px;margin-left:10px}.add-to-cart-panel .cart-info{margin-right:auto}.add-to-cart-panel .product-price{font-size:13px}.add-to-cart-panel:not(.item-added):not(.show-sticky-add-to-cart){pointer-events:none}

View File

@ -260,6 +260,10 @@
visibility: visible;
}
.dropdown-click ul li.wc-menu-item:hover ul {
display: block;
}
.sidebar .wc-mini-cart {
right: 100%;
top: 0;
@ -573,6 +577,7 @@ ul.products .woocommerce-text-align-right {
border-radius: 0;
color: inherit;
box-sizing: border-box;
text-decoration: none;
}
.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before,
@ -1203,7 +1208,7 @@ form.checkout:after {
opacity: 0;
transition: opacity 500ms ease-in-out, transform 500ms ease-in-out;
box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.2);
z-index: 50;
z-index: 101;
font-size: 90%;
box-sizing: border-box;
transform: translateY(-100%);

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
jQuery( document ).ready( function($) {
jQuery( function( $ ) {
$( '#customize-control-generate_woocommerce_primary_button_message a' ).on( 'click', function( e ) {
e.preventDefault();
wp.customize.control( 'generate_settings[form_button_background_color]' ).focus();
});
});
} );
} );

View File

@ -675,8 +675,10 @@ add_filter( 'woocommerce_add_to_cart_fragments', 'generatepress_wc_cart_link_fra
function generatepress_wc_cart_link_fragment( $fragments ) {
global $woocommerce;
$fragments['.cart-contents span.amount'] = ( WC()->cart->subtotal > 0 ) ? '<span class="amount">' . wp_kses_data( WC()->cart->get_cart_subtotal() ) . '</span>' : '<span class="amount"></span>';
$fragments['.cart-contents span.number-of-items'] = ( WC()->cart->get_cart_contents_count() > 0 ) ? '<span class="number-of-items">' . wp_kses_data( WC()->cart->get_cart_contents_count() ) . '</span>' : '<span class="number-of-items no-items"></span>';
if ( isset( WC()->cart ) ) {
$fragments['.cart-contents span.amount'] = ( WC()->cart->subtotal > 0 ) ? '<span class="amount">' . wp_kses_data( WC()->cart->get_cart_subtotal() ) . '</span>' : '<span class="amount"></span>';
$fragments['.cart-contents span.number-of-items'] = ( WC()->cart->get_cart_contents_count() > 0 ) ? '<span class="number-of-items">' . wp_kses_data( WC()->cart->get_cart_contents_count() ) . '</span>' : '<span class="number-of-items no-items"></span>';
}
return $fragments;
}
@ -1054,6 +1056,9 @@ function generatepress_wc_css() {
if ( '' !== generatepress_wc_get_setting( 'mobile_columns_gap' ) ) {
$css->add_property( 'grid-gap', generatepress_wc_get_setting( 'mobile_columns_gap' ), false, 'px' );
}
$css->set_selector( '.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images' );
$css->add_property( 'width', '100%' );
$css->stop_media_query();
$using_flex = false;
@ -1135,8 +1140,7 @@ function generatepress_wc_product_has_gallery( $classes ) {
$post_type = get_post_type( get_the_ID() );
if ( 'product' === $post_type && method_exists( 'WC_Product', 'get_gallery_image_ids' ) ) {
$product = new WC_Product( get_the_ID() );
$product = wc_get_product( get_the_ID() );
$attachment_ids = $product->get_gallery_image_ids();
if ( $attachment_ids && generatepress_wc_get_setting( 'product_secondary_image' ) && generatepress_wc_get_setting( 'product_archive_image' ) && has_post_thumbnail() ) {
@ -1157,7 +1161,7 @@ function generatepress_wc_secondary_product_image() {
$post_type = get_post_type( get_the_ID() );
if ( 'product' === $post_type && method_exists( 'WC_Product', 'get_gallery_image_ids' ) ) {
$product = new WC_Product( get_the_ID() );
$product = wc_get_product( get_the_ID() );
$attachment_ids = $product->get_gallery_image_ids();
if ( $attachment_ids && generatepress_wc_get_setting( 'product_secondary_image' ) && generatepress_wc_get_setting( 'product_archive_image' ) && has_post_thumbnail() ) {
@ -1257,13 +1261,27 @@ function generatepress_wc_add_to_cart_helper() {
</div>
<div class="cart-data">
<?php echo sprintf ( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'gp-premium' ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total(); ?>
<?php
if ( isset( WC()->cart ) ) {
echo sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'gp-premium' ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total();
}
?>
</div>
</div>
<div class="checkout">
<a href="<?php echo wc_get_checkout_url(); ?>" class="button"><?php _e( 'Checkout', 'gp-premium' ); ?></a>
</div>
<?php
// phpcs:ignore -- No need to escape full thing.
echo apply_filters(
'generate_wc_cart_panel_checkout_button_output',
sprintf(
'<div class="checkout">
<a href="%s" class="button">%s</a>
</div>',
esc_url( wc_get_checkout_url() ),
esc_html__( 'Checkout', 'gp-premium' )
)
);
?>
<?php
endif;
@ -1287,31 +1305,46 @@ function generatepress_wc_add_to_cart_helper() {
<div class="product-price">
<?php echo $product->get_price_html(); ?>
</div>
<?php endif; ?>
<?php if ( $product->is_type( 'simple' ) ) : ?>
<form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="cart<?php echo $quantity_buttons; ?>" method="post" enctype="multipart/form-data">
<?php
$args = array(
'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
);
echo woocommerce_quantity_input( $args, $product, false );
?>
<button type="submit" class="button alt"><?php echo esc_html( $product->add_to_cart_text() ); ?></button>
</form>
<?php endif;
if ( $product->is_type( 'variable' ) ) : ?>
<button type="submit" class="button alt go-to-variables"><?php echo esc_html( $product->add_to_cart_text() ); ?></button>
<?php endif;
$action = '';
if ( $product->is_type( 'external' ) ) : ?>
<form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="cart" method="post" enctype="multipart/form-data">
<button type="submit" class="button alt"><?php echo esc_html( $product->add_to_cart_text() ); ?></button>
</form>
<?php endif;
if ( $product->is_type( 'simple' ) ) {
$args = array(
'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
);
$action = sprintf(
'<form action="%1$s" class="cart%2$s" method="post" enctype="multipart/form-data">
%3$s
<button type="submit" class="button alt">%4$s</button>
</form>',
esc_url( $product->add_to_cart_url() ),
$quantity_buttons,
woocommerce_quantity_input( $args, $product, false ),
esc_html( $product->add_to_cart_text() )
);
}
if ( $product->is_type( 'variable' ) ) {
$action = sprintf(
'<button type="submit" class="button alt go-to-variables">%s</button>',
esc_html( $product->add_to_cart_text() )
);
}
if ( $product->is_type( 'external' ) ) {
$action = sprintf(
'<form action="%1$s" class="cart" method="post" enctype="multipart/form-data">
<button type="submit" class="button alt">%2$s</button>
</form>',
esc_url( $product->add_to_cart_url() ),
esc_html( $product->add_to_cart_text() )
);
}
echo apply_filters( 'generate_wc_sticky_add_to_cart_action', $action, $product ); // phpcs:ignore -- No escaping needed.
endif;
?>
@ -1327,7 +1360,9 @@ add_filter( 'woocommerce_add_to_cart_fragments', 'generatepress_add_to_cart_pane
* @since 1.8
*/
function generatepress_add_to_cart_panel_fragments( $fragments ) {
$fragments['.add-to-cart-panel .cart-data'] = '<div class="cart-data">' . sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'gp-premium' ), WC()->cart->get_cart_contents_count() ) . ' - ' . WC()->cart->get_cart_total() . '</div>';
if ( isset( WC()->cart ) ) {
$fragments['.add-to-cart-panel .cart-data'] = '<div class="cart-data">' . sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'gp-premium' ), WC()->cart->get_cart_contents_count() ) . ' - ' . WC()->cart->get_cart_total() . '</div>';
}
return $fragments;
}
@ -1353,7 +1388,7 @@ function generatepress_wc_show_sticky_add_to_cart() {
$show = true;
}
return $show;
return apply_filters( 'generate_wc_show_sticky_add_to_cart', $show );
}
/**

View File

@ -1,25 +1,15 @@
jQuery( document ).ready( function( $ ) {
var throttle = function(fn, threshhold, scope) {
threshhold || (threshhold = 250);
var last,
deferTimer;
jQuery( function( $ ) {
var throttle = function( callback, limit ) {
var wait = false;
return function () {
var context = scope || this;
return function() {
if ( ! wait ) {
callback.call();
wait = true;
var now = +new Date,
args = arguments;
if (last && now < last + threshhold) {
// hold on to it
clearTimeout(deferTimer);
deferTimer = setTimeout(function () {
last = now;
fn.apply(context, args);
}, threshhold);
} else {
last = now;
fn.apply(context, args);
setTimeout( function() {
wait = false;
}, limit );
}
};
};
@ -46,7 +36,7 @@ jQuery( document ).ready( function( $ ) {
} );
if ( generateWooCommerce.addToCartPanel ) {
$( document.body ).on( "added_to_cart", function() {
$( document.body ).on( 'added_to_cart', function() {
var adminBar = $( '#wpadminbar' ),
stickyNav = $( '.navigation-stick' ),
top = 0;
@ -62,7 +52,7 @@ jQuery( document ).ready( function( $ ) {
$( '.add-to-cart-panel' ).addClass( 'item-added' ).css( {
'-webkit-transform': 'translateY(' + top + 'px)',
'-ms-transform': 'translateY(' + top + 'px)',
'transform': 'translateY(' + top + 'px)'
transform: 'translateY(' + top + 'px)',
} );
} );
@ -72,7 +62,7 @@ jQuery( document ).ready( function( $ ) {
$( '.add-to-cart-panel' ).removeClass( 'item-added' ).css( {
'-webkit-transform': 'translateY(-100%)',
'-ms-transform': 'translateY(-100%)',
'transform': 'translateY(-100%)'
transform: 'translateY(-100%)',
} );
} );
@ -83,7 +73,7 @@ jQuery( document ).ready( function( $ ) {
panel.removeClass( 'item-added' ).css( {
'-webkit-transform': 'translateY(-100%)',
'-ms-transform': 'translateY(-100%)',
'transform': 'translateY(-100%)'
transform: 'translateY(-100%)',
} );
}
}, 250 ) );
@ -91,6 +81,7 @@ jQuery( document ).ready( function( $ ) {
if ( generateWooCommerce.stickyAddToCart ) {
var lastScroll = 0;
$( window ).on( 'scroll', throttle( function() {
var adminBar = $( '#wpadminbar' ),
stickyNav = $( '.navigation-stick' ),
@ -125,13 +116,13 @@ jQuery( document ).ready( function( $ ) {
panel.addClass( 'show-sticky-add-to-cart' ).css( {
'-webkit-transform': 'translateY(' + top + 'px)',
'-ms-transform': 'translateY(' + top + 'px)',
'transform': 'translateY(' + top + 'px)'
transform: 'translateY(' + top + 'px)',
} );
} else {
} else {
panel.removeClass( 'show-sticky-add-to-cart' ).css( {
'-webkit-transform': '',
'-ms-transform': '',
'transform': ''
transform: '',
} );
}
}, 250 ) );
@ -151,14 +142,14 @@ jQuery( document ).ready( function( $ ) {
offset = offset + adminBar.outerHeight();
}
$( 'html, body' ).animate({
scrollTop: $( '.variations' ).offset().top - offset
$( 'html, body' ).animate( {
scrollTop: $( '.variations' ).offset().top - offset,
}, 250 );
} );
}
$( function() {
"use strict";
'use strict';
if ( generateWooCommerce.quantityButtons ) {
generateQuantityButtons();
@ -166,7 +157,7 @@ jQuery( document ).ready( function( $ ) {
} );
$( document ).ajaxComplete( function() {
"use strict";
'use strict';
if ( generateWooCommerce.quantityButtons ) {
generateQuantityButtons();
@ -174,104 +165,115 @@ jQuery( document ).ready( function( $ ) {
} );
function generateQuantityButtons() {
var quantityBoxes,
cart = $( '.woocommerce div.product form.cart' );
// Check if we have an overwrite hook for this function
try {
return generateWooCommerce.hooks.generateQuantityButtons();
} catch ( e ) {
// No hook in place, carry on
}
// Grab the FIRST available cart form on the page
var cart = $( '.woocommerce div.product form.cart' ).first();
// Check if we see elementor style classes
if ( cart.closest( '.elementor-add-to-cart' ).length ) {
// Found classes, remove them and finish here
$( '.elementor.product' ).removeClass( 'do-quantity-buttons' );
return;
}
quantityBoxes = $( '.cart div.quantity:not(.buttons-added), .cart td.quantity:not(.buttons-added)' ).find( '.qty' );
// Grab all the quantity boxes that need dynamic buttons adding
var quantityBoxes;
if ( quantityBoxes ) {
$.each( quantityBoxes, function( key, value ) {
try {
// Is there a hook available?
quantityBoxes = generateWooCommerce.selectors.generateQuantityButtons.quantityBoxes;
} catch ( e ) {
// Use the default plugin selector functionality
quantityBoxes = $( '.cart div.quantity:not(.buttons-added), .cart td.quantity:not(.buttons-added)' ).find( '.qty' );
}
// Test the elements have length and greater than 0
// Try, catch here to provide basic error checking on hooked data
try {
// Nothing found... stop here
if ( quantityBoxes.length === 0 ) {
return false;
}
} catch ( e ) {
return false;
}
// Allow the each loop callback to be completely overwritten
var quantityBoxesCallback;
try {
// Try assign a hooked callback
quantityBoxesCallback = generateWooCommerce.callbacks.generateQuantityButtons.quantityBoxes;
} catch ( e ) {
// Use the default callback handler
quantityBoxesCallback = function( key, value ) {
var box = $( value );
if ( 'date' !== box.prop( 'type' ) && 'hidden' !== box.prop( 'type' ) ) {
// Add plus and minus icons
box.parent().addClass( 'buttons-added' ).prepend('<a href="javascript:void(0)" class="minus">-</a>');
box.after('<a href="javascript:void(0)" class="plus">+</a>');
// Check allowed types
if ( [ 'date', 'hidden' ].indexOf( box.prop( 'type' ) ) !== -1 ) {
return;
}
// Target quantity inputs on product pages
$( 'input.qty:not(.product-quantity input.qty)' ).each( function() {
var min = parseFloat( $( this ).attr( 'min' ) );
// Add plus and minus icons
box.parent().addClass( 'buttons-added' ).prepend( '<a href="javascript:void(0)" class="minus">-</a>' );
box.after( '<a href="javascript:void(0)" class="plus">+</a>' );
if ( min && min > 0 && parseFloat( $( this ).val() ) < min ) {
$( this ).val( min );
}
} );
// Enforce min value on the input
var min = parseFloat( $( this ).attr( 'min' ) );
// Quantity input
if ( $( 'body' ).hasClass( 'single-product' ) && ! cart.hasClass( 'grouped_form' ) ) {
var quantityInput = $( '.woocommerce form input[type=number].qty' );
if ( min && min > 0 && parseFloat( $( this ).val() ) < min ) {
$( this ).val( min );
}
quantityInput.on( 'keyup', function() {
var qty_val = $( this ).val();
quantityInput.val( qty_val );
} );
// Add event handlers to plus and minus (within this scope)
box.parent().find( '.plus, .minus' ).on( 'click', function() {
// Get values
var currentQuantity = parseFloat( box.val() ),
maxQuantity = parseFloat( box.attr( 'max' ) ),
minQuantity = parseFloat( box.attr( 'min' ) ),
step = box.attr( 'step' );
// Fallback default values
if ( ! currentQuantity || '' === currentQuantity || 'NaN' === currentQuantity ) {
currentQuantity = 0;
}
$( '.plus, .minus' ).off( 'click' );
if ( '' === maxQuantity || 'NaN' === maxQuantity ) {
maxQuantity = '';
}
$( '.plus, .minus' ).on( 'click', function() {
// Quantity
var quantityBox;
if ( '' === minQuantity || 'NaN' === minQuantity ) {
minQuantity = 0;
}
// If floating bar is enabled
if ( $( 'body' ).hasClass( 'single-product' ) && ! cart.hasClass( 'grouped_form' ) && ! cart.hasClass( 'cart_group' ) ) {
quantityBox = $( '.plus, .minus' ).closest( '.quantity' ).find( '.qty' );
if ( 'any' === step || '' === step || undefined === step || 'NaN' === parseFloat( step ) ) {
step = 1;
}
if ( $( this ).is( '.plus' ) ) {
if ( maxQuantity && ( maxQuantity === currentQuantity || currentQuantity > maxQuantity ) ) {
box.val( maxQuantity );
} else {
quantityBox = $( this ).closest( '.quantity' ).find( '.qty' );
box.val( currentQuantity + parseFloat( step ) );
}
} else if ( minQuantity && ( minQuantity === currentQuantity || currentQuantity < minQuantity ) ) {
box.val( minQuantity );
} else if ( currentQuantity > 0 ) {
box.val( currentQuantity - parseFloat( step ) );
}
// Get values
var currentQuantity = parseFloat( quantityBox.val() ),
maxQuantity = parseFloat( quantityBox.attr( 'max' ) ),
minQuantity = parseFloat( quantityBox.attr( 'min' ) ),
step = quantityBox.attr( 'step' );
// Fallback default values
if ( ! currentQuantity || '' === currentQuantity || 'NaN' === currentQuantity ) {
currentQuantity = 0;
}
if ( '' === maxQuantity || 'NaN' === maxQuantity ) {
maxQuantity = '';
}
if ( '' === minQuantity || 'NaN' === minQuantity ) {
minQuantity = 0;
}
if ( 'any' === step || '' === step || undefined === step || 'NaN' === parseFloat( step ) ) {
step = 1;
}
// Change the value
if ( $( this ).is( '.plus' ) ) {
if ( maxQuantity && ( maxQuantity == currentQuantity || currentQuantity > maxQuantity ) ) {
quantityBox.val( maxQuantity );
} else {
quantityBox.val( currentQuantity + parseFloat( step ) );
}
} else {
if ( minQuantity && ( minQuantity == currentQuantity || currentQuantity < minQuantity ) ) {
quantityBox.val( minQuantity );
} else if ( currentQuantity > 0 ) {
quantityBox.val( currentQuantity - parseFloat( step ) );
}
}
// Trigger change event
quantityBox.trigger( 'change' );
} );
}
} );
// Trigger change event
box.trigger( 'change' );
} );
};
}
$.each( quantityBoxes, quantityBoxesCallback );
}
});
} );

View File

@ -1 +1 @@
jQuery(document).ready(function(d){function t(s,o,r){var n,i;return o=o||250,function(){var t=r||this,a=+new Date,e=arguments;n&&a<n+o?(clearTimeout(i),i=setTimeout(function(){n=a,s.apply(t,e)},o)):(n=a,s.apply(t,e))}}var m;function a(){var t,r=d(".woocommerce div.product form.cart");r.closest(".elementor-add-to-cart").length?d(".elementor.product").removeClass("do-quantity-buttons"):(t=d(".cart div.quantity:not(.buttons-added), .cart td.quantity:not(.buttons-added)").find(".qty"))&&d.each(t,function(t,a){var e,s=d(a);"date"!==s.prop("type")&&"hidden"!==s.prop("type")&&(s.parent().addClass("buttons-added").prepend('<a href="javascript:void(0)" class="minus">-</a>'),s.after('<a href="javascript:void(0)" class="plus">+</a>'),d("input.qty:not(.product-quantity input.qty)").each(function(){var t=parseFloat(d(this).attr("min"));t&&0<t&&parseFloat(d(this).val())<t&&d(this).val(t)}),d("body").hasClass("single-product")&&!r.hasClass("grouped_form")&&(e=d(".woocommerce form input[type=number].qty")).on("keyup",function(){var t=d(this).val();e.val(t)}),d(".plus, .minus").off("click"),d(".plus, .minus").on("click",function(){var t=!d("body").hasClass("single-product")||r.hasClass("grouped_form")||r.hasClass("cart_group")?d(this).closest(".quantity").find(".qty"):d(".plus, .minus").closest(".quantity").find(".qty"),a=parseFloat(t.val()),e=parseFloat(t.attr("max")),s=parseFloat(t.attr("min")),o=t.attr("step");a&&""!==a&&"NaN"!==a||(a=0),""!==e&&"NaN"!==e||(e=""),""!==s&&"NaN"!==s||(s=0),"any"!==o&&""!==o&&void 0!==o&&"NaN"!==parseFloat(o)||(o=1),d(this).is(".plus")?e&&(e==a||e<a)?t.val(e):t.val(a+parseFloat(o)):s&&(s==a||a<s)?t.val(s):0<a&&t.val(a-parseFloat(o)),t.trigger("change")}))})}d("body").on("added_to_cart",function(){d(".wc-menu-item").hasClass("has-items")||d(".wc-menu-item").addClass("has-items"),d(".wc-mobile-cart-items").hasClass("has-items")||d(".wc-mobile-cart-items").addClass("has-items")}),d("body").on("removed_from_cart",function(){var t=d(".number-of-items");t.length&&t.hasClass("no-items")&&(d(".wc-menu-item").removeClass("has-items"),d(".wc-mobile-cart-items").removeClass("has-items"))}),generateWooCommerce.addToCartPanel&&(d(document.body).on("added_to_cart",function(){var t=d("#wpadminbar"),a=d(".navigation-stick"),e=0;t.length&&(e=t.outerHeight()),a.length&&"0px"===a.css("top")&&(e+=a.outerHeight()),d(".add-to-cart-panel").addClass("item-added").css({"-webkit-transform":"translateY("+e+"px)","-ms-transform":"translateY("+e+"px)",transform:"translateY("+e+"px)"})}),d(".add-to-cart-panel .continue-shopping").on("click",function(t){t.preventDefault(),d(".add-to-cart-panel").removeClass("item-added").css({"-webkit-transform":"translateY(-100%)","-ms-transform":"translateY(-100%)",transform:"translateY(-100%)"})}),d(window).on("scroll",t(function(){var t=d(".add-to-cart-panel");t.hasClass("item-added")&&t.removeClass("item-added").css({"-webkit-transform":"translateY(-100%)","-ms-transform":"translateY(-100%)",transform:"translateY(-100%)"})},250))),generateWooCommerce.stickyAddToCart&&(m=0,d(window).on("scroll",t(function(){var t=d("#wpadminbar"),a=d(".navigation-stick"),e=0,s=d(window).scrollTop(),o=d(".add-to-cart-panel"),r=o.offset().top+o.outerHeight(),n=d(".single_add_to_cart_button"),i=n.offset().top,l=n.outerHeight(),c=d(".site-footer").offset().top;t.length&&(e=t.outerHeight()),a.length&&(a.hasClass("auto-hide-sticky")?(s<m&&"0px"===a.css("top")&&(e+=a.outerHeight()),m=s):e+=a.outerHeight()),i+l<s&&r<c?o.addClass("show-sticky-add-to-cart").css({"-webkit-transform":"translateY("+e+"px)","-ms-transform":"translateY("+e+"px)",transform:"translateY("+e+"px)"}):o.removeClass("show-sticky-add-to-cart").css({"-webkit-transform":"","-ms-transform":"",transform:""})},250)),d(".go-to-variables").on("click",function(t){t.preventDefault();var a=0,e=d(".navigation-stick"),s=d("#wpadminbar");e.length&&(a=e.outerHeight()),s.length&&(a+=s.outerHeight()),d("html, body").animate({scrollTop:d(".variations").offset().top-a},250)})),d(function(){"use strict";generateWooCommerce.quantityButtons&&a()}),d(document).ajaxComplete(function(){"use strict";generateWooCommerce.quantityButtons&&a()})});
jQuery(function(d){function t(t,a){var e=!1;return function(){e||(t.call(),e=!0,setTimeout(function(){e=!1},a))}}var m;function a(){try{return generateWooCommerce.hooks.generateQuantityButtons()}catch(t){}var a,e;if(d(".woocommerce div.product form.cart").first().closest(".elementor-add-to-cart").length)d(".elementor.product").removeClass("do-quantity-buttons");else{try{a=generateWooCommerce.selectors.generateQuantityButtons.quantityBoxes}catch(t){a=d(".cart div.quantity:not(.buttons-added), .cart td.quantity:not(.buttons-added)").find(".qty")}try{if(0===a.length)return}catch(t){return}try{e=generateWooCommerce.callbacks.generateQuantityButtons.quantityBoxes}catch(t){e=function(t,a){var e,s=d(a);-1===["date","hidden"].indexOf(s.prop("type"))&&(s.parent().addClass("buttons-added").prepend('<a href="javascript:void(0)" class="minus">-</a>'),s.after('<a href="javascript:void(0)" class="plus">+</a>'),(e=parseFloat(d(this).attr("min")))&&0<e&&parseFloat(d(this).val())<e&&d(this).val(e),s.parent().find(".plus, .minus").on("click",function(){var t=parseFloat(s.val()),a=parseFloat(s.attr("max")),e=parseFloat(s.attr("min")),o=s.attr("step");t&&""!==t&&"NaN"!==t||(t=0),""!==a&&"NaN"!==a||(a=""),""!==e&&"NaN"!==e||(e=0),"any"!==o&&""!==o&&void 0!==o&&"NaN"!==parseFloat(o)||(o=1),d(this).is(".plus")?a&&(a===t||a<t)?s.val(a):s.val(t+parseFloat(o)):e&&(e===t||t<e)?s.val(e):0<t&&s.val(t-parseFloat(o)),s.trigger("change")}))}}d.each(a,e)}}d("body").on("added_to_cart",function(){d(".wc-menu-item").hasClass("has-items")||d(".wc-menu-item").addClass("has-items"),d(".wc-mobile-cart-items").hasClass("has-items")||d(".wc-mobile-cart-items").addClass("has-items")}),d("body").on("removed_from_cart",function(){var t=d(".number-of-items");t.length&&t.hasClass("no-items")&&(d(".wc-menu-item").removeClass("has-items"),d(".wc-mobile-cart-items").removeClass("has-items"))}),generateWooCommerce.addToCartPanel&&(d(document.body).on("added_to_cart",function(){var t=d("#wpadminbar"),a=d(".navigation-stick"),e=0;t.length&&(e=t.outerHeight()),a.length&&"0px"===a.css("top")&&(e+=a.outerHeight()),d(".add-to-cart-panel").addClass("item-added").css({"-webkit-transform":"translateY("+e+"px)","-ms-transform":"translateY("+e+"px)",transform:"translateY("+e+"px)"})}),d(".add-to-cart-panel .continue-shopping").on("click",function(t){t.preventDefault(),d(".add-to-cart-panel").removeClass("item-added").css({"-webkit-transform":"translateY(-100%)","-ms-transform":"translateY(-100%)",transform:"translateY(-100%)"})}),d(window).on("scroll",t(function(){var t=d(".add-to-cart-panel");t.hasClass("item-added")&&t.removeClass("item-added").css({"-webkit-transform":"translateY(-100%)","-ms-transform":"translateY(-100%)",transform:"translateY(-100%)"})},250))),generateWooCommerce.stickyAddToCart&&(m=0,d(window).on("scroll",t(function(){var t=d("#wpadminbar"),a=d(".navigation-stick"),e=0,o=d(window).scrollTop(),s=d(".add-to-cart-panel"),r=s.offset().top+s.outerHeight(),n=d(".single_add_to_cart_button"),i=n.offset().top,c=n.outerHeight(),l=d(".site-footer").offset().top;t.length&&(e=t.outerHeight()),a.length&&(a.hasClass("auto-hide-sticky")?(o<m&&"0px"===a.css("top")&&(e+=a.outerHeight()),m=o):e+=a.outerHeight()),i+c<o&&r<l?s.addClass("show-sticky-add-to-cart").css({"-webkit-transform":"translateY("+e+"px)","-ms-transform":"translateY("+e+"px)",transform:"translateY("+e+"px)"}):s.removeClass("show-sticky-add-to-cart").css({"-webkit-transform":"","-ms-transform":"",transform:""})},250)),d(".go-to-variables").on("click",function(t){t.preventDefault();var a=0,e=d(".navigation-stick"),o=d("#wpadminbar");e.length&&(a=e.outerHeight()),o.length&&(a+=o.outerHeight()),d("html, body").animate({scrollTop:d(".variations").offset().top-a},250)})),d(function(){"use strict";generateWooCommerce.quantityButtons&&a()}),d(document).ajaxComplete(function(){"use strict";generateWooCommerce.quantityButtons&&a()})});