/**
* Layers Masonry JS file
*
* All Masonry / Filtering related functions are to be kept in this file
*
* Author: Obox Themes
* Author URI: http://www.oboxthemes.com/
* License: GNU General Public License v2 or later
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
(function ( $ ) {
// These are the defaults.
$.fn.layers_masonry = function( options ) {
// "Hi Mom"
$that = $(this);
// Bail if there are no masonry elements bening passsed in.
if ( $that.length == 0 ) return ;
// Masonry options.
var settings = $.extend({
// These are the defaults.
gutter: 20
}, options );
/*
* Deal with Masonary blocks loading broken - stacked on top from eachother.
*/
// Show a loading graphic if there's a delay in loading of images.
$that.data(
'masonry_timeout',
setTimeout( function() {
return;
// Add a loading gif to the masonry while hiding all
// the elements until they are cheked again and all ready.
if( ! $that.find( '.masonry-loading' ).length ){
$that.append('
' );
$that.find('.masonry-loading').stop(true).animate({ 'opacity': 1 });
}
}, 300 )
);
// Start a imagesLoaded check when all the contained images have loaded.
$that.imagesLoaded( function( el ) {
$that = $( el.elements );
// Clear the loading graphic display.
clearTimeout( $that.data( 'masonry_timeout') );
// Remove loader when loaded.
$that.find('.masonry-loading').stop(true).animate({ 'opacity': 0 },function(){
$that.remove( '.masonry-loading' );
});
// Add class when loaded.
$that.addClass('loaded');
// Init Masonry.
$that.masonry( settings );
});
};
}( jQuery ));
jQuery(function($){
$('.layers-masonry-filter li').on( 'click' , function(e){
e.preventDefault();
// "Hi Mom"
$that = $(this);
// Get term slug
$filter = $that.data( 'filter' );
// Set Masonry Container
$masonry_container_id = $that.closest( '.layers-masonry-filter' ).data( 'masonry-container' );
// Target the masonry container
$masonry_container = $( '#' + $masonry_container_id );
// Get the main Masonry Grid element.
$masonry_grid = $masonry_container.find('.list-masonry .grid');
if ( 0 == $masonry_grid.length ) $masonry_grid = $masonry_container.find('.list-masonry');
// Set whether is Masonry or not
$is_masonry = ( 0 != $masonry_grid.length );
if( '' == $filter) {
// Toggle button
$that.removeClass( 'active' ).siblings().removeClass('active');
// Prep filter selector
$final_filter = '*';
} else {
// Toggle button
$that.toggleClass( 'active' ).siblings().removeClass('active');
// Prep filter selector
$final_filter = '.' + $filter;
if( ! $that.hasClass( 'active' ) ) {
$final_filter = '*';
}
}
// Hide items
$masonry_container.find( '.layers-masonry-column' ).not( $final_filter ).removeClass('active').addClass( 'hide' );
// Show items
$masonry_container.find( '.layers-masonry-column' ).filter( $final_filter ).addClass('active').removeClass( 'hide' );
// Relayout if Masonry
if( $is_masonry ){
$masonry_grid.masonry( 'layout' );
}
});
});