( function( $ ) {
var loadStatus = true;
var count = 1;
var loader = '';
var total = 0;
var isElEditMode = false;
/**
* Function to fetch widget settings.
*/
var getWidgetSettings = function ($element) {
var widgetSettings = {},
modelCID = $element.data( 'model-cid' );
if ( isElEditMode && modelCID ) {
var settings = elementorFrontend.config.elements.data[ modelCID ],
settingsKeys = elementorFrontend.config.elements.keys[ settings.attributes.widgetType || settings.attributes.elType ];
jQuery.each(
settings.getActiveControls(),
function( controlKey ) {
if ( -1 !== settingsKeys.indexOf( controlKey ) ) {
widgetSettings[ controlKey ] = settings.attributes[ controlKey ];
}
}
);
} else {
widgetSettings = $element.data( 'settings' ) || {};
}
return widgetSettings;
};
function _equal_height( slider_wrapper ) {
var post_wrapper = slider_wrapper.find('.uael-post-wrapper'),
post_active = slider_wrapper.find('.slick-active'),
max_height = -1,
wrapper_height = -1,
equal_height = slider_wrapper.data( 'equal-height' ),
post_active_height = -1;
if ( 'yes' != equal_height ) {
return;
}
post_active.each( function( i ) {
var $this = $( this ),
this_height = $this.outerHeight(),
blog_post = $this.find( '.uael-post__bg-wrap' ),
blog_post_height = blog_post.outerHeight();
if( max_height < blog_post_height ) {
max_height = blog_post_height;
post_active_height = max_height + 15;
}
if ( wrapper_height < this_height ) {
wrapper_height = this_height
}
});
post_active.each( function( i ) {
var selector = $( this ).find( '.uael-post__bg-wrap' );
selector.animate({ height: max_height }, { duration: 200, easing: 'linear' });
});
slider_wrapper.find('.slick-list.draggable').animate({ height: post_active_height }, { duration: 200, easing: 'linear' });
max_height = -1;
wrapper_height = -1;
post_wrapper.each(function() {
var $this = jQuery( this ),
selector = $this.find( '.uael-post__bg-wrap' ),
blog_post_height = selector.outerHeight();
if ( $this.hasClass('slick-active') ) {
return true;
}
selector.css( 'height', blog_post_height );
});
}
var WidgetUAELPostGridHandler = function( $scope, $ ) {
if ( 'undefined' == typeof $scope ) {
return;
}
var selector = $scope.find( '.uael-post-grid__inner' );
if ( selector.length < 1 ) {
return;
}
loader = $scope.find( '.uael-post-inf-loader' );
var $tabs_dropdown = $scope.find('.uael-filters-dropdown-list');
$( 'html' ).on( 'click', function() {
$tabs_dropdown.removeClass( 'show-list' );
});
$scope.on( 'click', '.uael-filters-dropdown-button', function(e) {
e.stopPropagation();
$tabs_dropdown.toggleClass( 'show-list' );
});
var post_grid = $scope.find( '.uael-post-grid' );
var layout = post_grid.data( 'layout' ),
structure = post_grid.data( 'structure' );
var filter_cat;
if ( 'masonry' == structure ) {
if (typeof $scope.imagesLoaded !== 'undefined' && typeof $scope.imagesLoaded === 'function') {
$scope.imagesLoaded( function(e) {
selector.isotope({
layoutMode: layout,
itemSelector: '.uael-post-wrapper',
});
});
}
}
$scope.find( '.uael-post__header-filter' ).off( 'click' ).on( 'click', function(e) {
$this = $( this );
$this.siblings().removeClass( 'uael-filter__current' );
$this.addClass( 'uael-filter__current' );
var filterValue = $this.attr( 'data-filter' );
var def_filter = '';
if( '*' === filterValue ) {
filter_cat = post_grid.data( 'filter-default' );
} else {
filter_cat = filterValue.substr(1);
}
if( post_grid.data( 'default-filter' ) ) {
def_filter = post_grid.data( 'default-filter' );
} else {
def_filter = post_grid.data( 'filter-default' );
}
var str_text = $scope.find( '.uael-filter__current' ).first().text();
$scope.find( '.uael-filters-dropdown-button' ).text( str_text );
count = 1;
_uaelPostAjax( $scope, $this );
});
$scope.find( '.uael-post__header-filter' ).off( 'keyup' ).on( 'keyup', function( e ) {
$this = $( this );
if ( 9 == e.keyCode ) {
$this.siblings().removeClass( 'uael-filter__current' );
$this.addClass( 'uael-filter__current' );
var filterValue = $this.attr( 'data-filter' );
var def_filter = '';
if( '*' === filterValue ) {
filter_cat = post_grid.data( 'filter-default' );
} else {
filter_cat = filterValue.substr(1);
}
if( post_grid.data( 'default-filter' ) ){
def_filter = post_grid.data( 'default-filter' );
} else {
def_filter = post_grid.data( 'filter-default' );
}
var str_text = $scope.find( '.uael-filter__current' ).text();
str_text = str_text.substring( def_filter.length, str_text.length );
$scope.find( '.uael-filters-dropdown-button' ).text( str_text );
count = 1;
}
if ( 13 === e.keyCode ) {
_uaelPostAjax( $scope, $this );
}
});
if ( $scope.find( '.uael-post__header' ).children().length > 0 ) {
var default_filter = $scope.find( '.uael-post-grid' ).data( 'default-filter' );
var cat_id = window.location.hash.substring(1);
var pattern = new RegExp( "^[\\w\\-]+$" );
if( '' !== cat_id && pattern.test( cat_id ) ) {
$scope.find( '.uael-post__header-filter' ).each( function( key, value ) {
var $this = $( this );
var current_filter = $this.attr('data-filter');
if ( cat_id == current_filter.split('.').join("") ) {
$this.trigger( 'click' );
$this.trigger( 'keyup' );
}
});
}
if ( 'undefined' != typeof default_filter && '' != default_filter ) {
$scope.find( '.uael-post__header-filter' ).each( function( key, value ) {
var $this = $( this );
if ( default_filter == $this.text() ) {
$this.trigger( 'click' );
$this.trigger( 'keyup' );
}
} );
}
}
if ( 'carousel' == structure ) {
var slider_wrapper = $scope.find( '.uael-post-grid' ),
slider_selector = slider_wrapper.find( '.uael-post-grid__inner' ),
slider_options = slider_wrapper.data( 'post_slider' );
$scope.imagesLoaded( function() {
slider_selector.slick( slider_options );
_equal_height( slider_wrapper );
});
slider_wrapper.on( 'afterChange', function() {
_equal_height( slider_wrapper );
} );
$( window ).on( 'resize',function() {
$( "#log" ).append( "
Handler for .resize() called.
" );
});
}
if ( selector.hasClass( 'uael-post-infinite-scroll' ) && selector.hasClass( 'uael-post-infinite__event-scroll' ) ) {
if ( 'main' == $scope.find( '.uael-post-grid' ).data( 'query-type' ) ) {
return;
}
var windowHeight50 = jQuery( window ).outerHeight() / 1.25;
$( window ).on( 'scroll', function () {
if( elementorFrontend.isEditMode() ) {
loader.show();
return false;
}
if( ( $( window ).scrollTop() + windowHeight50 ) >= ( $scope.find( '.uael-post-wrapper:last' ).offset().top ) ) {
var $args = {
'page_id' : $scope.find( '.uael-post-grid' ).data('page'),
'widget_id' : $scope.data( 'id' ),
'filter' : $scope.find( '.uael-filter__current' ).data( 'filter' ),
'skin' : $scope.find( '.uael-post-grid' ).data( 'skin' ),
'page_number' : $scope.find( '.uael-post__footer .uael-grid-pagination' ).data( 'next-page' )
};
total = $scope.find( '.uael-post__footer .uael-grid-pagination' ).data( 'total' );
if( true == loadStatus ) {
if ( count < total ) {
loader.show();
_callAjax( $scope, $args, true );
count++;
loadStatus = false;
}
}
}
} );
}
}
$( document ).on( 'click', '.uael-post__load-more', function( e ) {
$scope = $( this ).closest( '.elementor-widget-uael-posts' );
if ( 'main' == $scope.find( '.uael-post-grid' ).data( 'query-type' ) ) {
return;
}
e.preventDefault();
if( elementorFrontend.isEditMode() ) {
loader.show();
return false;
}
var $args = {
'page_id' : $scope.find( '.uael-post-grid' ).data('page'),
'widget_id' : $scope.data( 'id' ),
'filter' : $scope.find( '.uael-filter__current' ).data( 'filter' ),
'skin' : $scope.find( '.uael-post-grid' ).data( 'skin' ),
'page_number' : ( count + 1 )
};
total = $scope.find( '.uael-post__footer .uael-grid-pagination' ).data( 'total' );
if( true == loadStatus ) {
if ( count < total ) {
loader.show();
$( this ).hide();
_callAjax( $scope, $args, true );
count++;
loadStatus = false;
}
}
} );
$( 'body' ).on( 'click', '.uael-grid-pagination .page-numbers', function( e ) {
$scope = $( this ).closest( '.elementor-widget-uael-posts' );
var elementSettings = getWidgetSettings( $scope );
var searchString = "show_filters";
var found = Object.keys(elementSettings).filter(function(key) {
return elementSettings[key] === 'ajax';
});
var is_filters = Object.keys(elementSettings).filter(function(key) {
return key.includes( searchString );
});
if ( ! found.length && ! is_filters.length ) {
return;
}
var post_grid = $scope.find( '.uael-post-grid' );
if ( 'main' == post_grid.data( 'query-type' ) ) {
return;
}
e.preventDefault();
$scope.find( '.uael-post-grid .uael-post-wrapper' ).last().after( '' );
var page_number = 1;
var curr = parseInt( $scope.find( '.uael-grid-pagination .page-numbers.current' ).html() );
var $this = $( this );
if ( $this.hasClass( 'next' ) ) {
page_number = curr + 1;
} else if ( $this.hasClass( 'prev' ) ) {
page_number = curr - 1;
} else {
page_number = $this.html();
}
$scope.find( '.uael-post-grid .uael-post-wrapper' ).last().after( '' );
var $args = {
'page_id' : post_grid.data('page'),
'widget_id' : $scope.data( 'id' ),
'filter' : $scope.find( '.uael-filter__current' ).data( 'filter' ),
'skin' : post_grid.data( 'skin' ),
'page_number' : page_number
};
var offset_top = post_grid.data( 'offset-top' );
if( '' != post_grid.data('filter-default') ){
offset_top = $scope.find('.uael-post__header-filters').outerHeight() + parseFloat( $scope.find( '.uael-post__header .uael-post__header-filters-wrap').css( 'marginBottom' ));
}
$('html, body').animate({
scrollTop: ( ( $scope.find( '.uael-post__body' ).offset().top ) - offset_top )
}, 'slow');
_callAjax( $scope, $args );
} );
var _uaelPostAjax = function( $scope, $this ) {
$scope.find( '.uael-post-grid .uael-post-wrapper' ).last().after( '' );
var $args = {
'page_id' : $scope.find( '.uael-post-grid' ).data('page'),
'widget_id' : $scope.data( 'id' ),
'filter' : $this.data( 'filter' ),
'skin' : $scope.find( '.uael-post-grid' ).data( 'skin' ),
'page_number' : 1
};
_callAjax( $scope, $args );
}
var _callAjax = function( $scope, $obj, $append ) {
$.ajax({
url: uael_posts_script.ajax_url,
data: {
action: 'uael_get_post',
page_id : $obj.page_id,
widget_id: $obj.widget_id,
category: $obj.filter,
skin: $obj.skin,
page_number : $obj.page_number,
nonce : uael_posts_script.posts_nonce,
},
dataType: 'json',
type: 'POST',
success: function( data ) {
$scope.find( '.uael-post-loader' ).remove();
var sel = $scope.find( '.uael-post-grid__inner' );
if( 'news' == $obj.skin ) {
sel = $scope.find( '.uael-post-grid' );
}
if ( true == $append ) {
var html_str = data.data.html;
html_str = html_str.replace( 'uael-post-wrapper-featured', '' );
sel.append( html_str );
} else {
sel.html( data.data.html );
}
$scope.find( '.uael-post__footer' ).html( data.data.pagination );
var layout = $scope.find( '.uael-post-grid' ).data( 'layout' ),
structure = $scope.find( '.uael-post-grid' ).data( 'structure' ),
selector = $scope.find( '.uael-post-grid__inner' );
if (
( 'normal' == structure || 'masonry' == structure ) &&
'' != layout
) {
if (typeof $scope.imagesLoaded !== 'undefined' && typeof $scope.imagesLoaded === 'function') {
$scope.imagesLoaded( function(e) {
selector.isotope( 'reloadItems' );
selector.isotope({
layoutMode: layout,
itemSelector: '.uael-post-wrapper',
animate: false
});
});
}
}
// Complete the process 'loadStatus'
loadStatus = true;
if ( true == $append ) {
loader.hide();
$scope.find( '.uael-post__load-more' ).show();
}
if( count == total ) {
$scope.find( '.uael-post__load-more' ).hide();
}
}
});
}
$( window ).on( 'elementor/frontend/init', function () {
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-posts.classic', WidgetUAELPostGridHandler );
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-posts.event', WidgetUAELPostGridHandler );
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-posts.card', WidgetUAELPostGridHandler );
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-posts.feed', WidgetUAELPostGridHandler );
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-posts.news', WidgetUAELPostGridHandler );
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-posts.business', WidgetUAELPostGridHandler );
});
} )( jQuery );