first commit
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
var $j = jQuery.noConflict();
|
||||
|
||||
$j( document ).ready( function() {
|
||||
"use strict";
|
||||
// Woo image zoom
|
||||
oceanwpWooImageZoom();
|
||||
} );
|
||||
|
||||
/* ==============================================
|
||||
WOOCOMMERCE IMAGE ZOOM
|
||||
============================================== */
|
||||
function oceanwpWooImageZoom() {
|
||||
"use strict"
|
||||
|
||||
// wc_single_product_params is required to continue.
|
||||
if ( typeof wc_single_product_params === 'undefined' ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Product gallery class.
|
||||
*/
|
||||
var ProductGallery = function( $target, args ) {
|
||||
this.$target = $target;
|
||||
this.$images = $j( '.woocommerce-product-gallery__image', $target );
|
||||
|
||||
// No images? Abort.
|
||||
if ( 0 === this.$images.length ) {
|
||||
this.$target.css( 'opacity', 1 );
|
||||
return;
|
||||
}
|
||||
|
||||
// Make this object available.
|
||||
$target.data( 'product_gallery', this );
|
||||
|
||||
// Pick functionality to initialize...
|
||||
this.zoom_enabled = $j.isFunction( $j.fn.zoom ) && wc_single_product_params.zoom_enabled;
|
||||
|
||||
// ...also taking args into account.
|
||||
if ( args ) {
|
||||
this.zoom_enabled = false === args.zoom_enabled ? false : this.zoom_enabled;
|
||||
}
|
||||
|
||||
// Bind functions to this.
|
||||
this.initZoom = this.initZoom.bind( this );
|
||||
|
||||
if ( this.zoom_enabled ) {
|
||||
this.initZoom();
|
||||
$target.on( 'woocommerce_gallery_init_zoom', this.initZoom );
|
||||
}
|
||||
};
|
||||
|
||||
ProductGallery.prototype.initZoom = function() {
|
||||
var zoomTarget = this.$images,
|
||||
galleryWidth = this.$target.width(),
|
||||
zoomEnabled = false;
|
||||
|
||||
$j( zoomTarget ).each( function( index, target ) {
|
||||
var image = $j( target ).find( 'img' );
|
||||
|
||||
if ( image.data( 'large_image_width' ) > galleryWidth ) {
|
||||
zoomEnabled = true;
|
||||
return false;
|
||||
}
|
||||
} );
|
||||
|
||||
// But only zoom if the img is larger than its container.
|
||||
if ( zoomEnabled ) {
|
||||
var zoom_options = {
|
||||
touch: false
|
||||
};
|
||||
|
||||
if ( 'ontouchstart' in window ) {
|
||||
zoom_options.on = 'click';
|
||||
}
|
||||
|
||||
zoomTarget.trigger( 'zoom.destroy' );
|
||||
zoomTarget.zoom( zoom_options );
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function to call wc_product_gallery on jquery selector.
|
||||
*/
|
||||
$j.fn.wc_product_gallery = function( args ) {
|
||||
new ProductGallery( this, args );
|
||||
return this;
|
||||
};
|
||||
|
||||
/*
|
||||
* Initialize all galleries on page.
|
||||
*/
|
||||
$j( '.woocommerce-product-gallery' ).each( function() {
|
||||
$j( this ).wc_product_gallery();
|
||||
} );
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user