KeymailSpecials2/wwwroot/js/modules/grid.js

96 lines
2.5 KiB
JavaScript

CNVS.Grid = function() {
var __core = SEMICOLON.Core;
var _reLayout = function(el) {
el.filter('.has-init-isotope').isotope('layout');
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.isotope.js', id: 'canvas-isotope-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-isotope', event: 'pluginIsotopeReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function() {
var element = jQuery(this),
elTransition = element.attr('data-transition') || '0.65s',
elLayoutMode = element.attr('data-layout') || 'masonry',
elStagger = element.attr('data-stagger') || 0,
elBase = element.attr('data-basewidth') || '.portfolio-item:not(.wide):eq(0)',
elOriginLeft = true,
elGrid;
_reLayout(element);
if( __core.getVars.isRTL ) {
elOriginLeft = false;
}
if( element.hasClass('portfolio') || element.hasClass('post-timeline') ){
elGrid = element.filter(':not(.has-init-isotope)').isotope({
layoutMode: elLayoutMode,
isOriginLeft: elOriginLeft,
transitionDuration: elTransition,
stagger: Number( elStagger ),
percentPosition: true,
masonry: {
columnWidth: element.find( elBase )[0]
}
});
} else {
elGrid = element.filter(':not(.has-init-isotope)').isotope({
layoutMode: elLayoutMode,
isOriginLeft: elOriginLeft,
transitionDuration: elTransition,
stagger: Number( elStagger ),
percentPosition: true,
});
}
if( element.data('isotope') ) {
element.addClass('has-init-isotope');
}
var int = setInterval( function() {
if( element.find('.lazy.lazy-loaded').length == element.find('.lazy').length ) {
setTimeout( function() {
_reLayout(element);
}, 666);
clearInterval(int);
}
}, 1000);
window.addEventListener( 'lazyLoadLoaded', function() {
_reLayout(element);
});
window.addEventListener( 'load', function() {
_reLayout(element);
});
__core.getVars.resizers.isotope = function() {
_reLayout(element);
};
});
});
}
};
}();