File: /var/www/vhosts/ensaco.es/httpdocs/wp-content/plugins/bb-plugin/modules/post-grid/js/settings.js
( function( $ ) {
$.validator.addMethod( "nonull", function( value, element ) {
layout = $('#fl-field-layout select[name=layout]').val();
if ( 'columns' !== layout ) {
return true;
}
return parseInt( value ) >= 1;
}, "Value must be one or greater" );
FLBuilder.registerModuleHelper( 'post-grid', {
rules: {
post_columns: {
nonull: true
},
post_columns_large: {
nonull: true
},
post_columns_medium: {
nonull: true
},
post_columns_responsive: {
nonull: true
},
},
resizeTimeout: null,
init: function() {
var form = $( '.fl-builder-settings' ),
resizeFields = form.find( '#fl-field-border, #fl-field-title_typography, #fl-field-info_typography, #fl-field-content_typography' ),
buttonBgColor = form.find( 'input[name=more_btn_bg_color]' ),
icon = form.find('input[name=icon]'),
layout = form.find( 'select[name=layout]' ),
postType = form.find( '#fl-field-post_type' ).find('select'),
showContent = form.find( 'select[name=show_content]' ),
showImage = form.find( 'select[name=show_image]' ),
dataSource = form.find( '#fl-field-data_source' ).find('select');
userSource = form.find( '#fl-field-users' ).find('select'),
equalHeightImage = form.find( 'select[name=equal_height_image]' ),
layout.on( 'change', this._layoutChanged.bind( this ) );
layout.on( 'change', this._equalHeightImageDependency.bind( this ) );
postType.on( 'change', this._toggleEventsSection.bind( this ) );
postType.on( 'change', this._toggleWooCommerceSection.bind( this ) );
dataSource.on( 'change', this._toggleWooCommerceSection.bind( this ) );
showContent.on( 'change', this._showContentChanged.bind(this) );
showImage.on( 'change', this._featuredImageDependencyChanged.bind(this) );
userSource.on( 'change', this._userSourceChanged.bind(this) );
resizeFields.find( 'input' ).on( 'input', this._resizeLayout.bind( this ) );
resizeFields.find( 'select' ).on( 'change', this._resizeLayout.bind( this ) );
buttonBgColor.on( 'change', this._previewButtonBackground );
icon.on( 'change', this._flipSettings );
equalHeightImage.on( 'change', this._equalHeightImageDependency.bind( this ) );
this._flipSettings();
this._toggleEventsSection();
this._toggleWooCommerceSection();
this._featuredImageDependencyChanged();
this._equalHeightImageDependency();
this._changePostContainer();
},
/**
* Layout Field Change event handler.
* @since 2.4.2
*/
_layoutChanged: function() {
this._showContentChanged();
this._changePostContainer();
this._featuredImageDependencyChanged();
},
_userSourceChanged: function() {
current = $( '.fl-builder-settings' ).find( '#fl-field-users' ).find('select').val();
if ( 'loggedin' === current || 'author' === current ) {
$( '.fl-builder-settings' ).find( '#fl-field-users' ).find( '#as-selections-users' ).hide()
} else {
$( '.fl-builder-settings' ).find( '#fl-field-users' ).find( '#as-selections-users' ).show()
}
},
/**
* Toggle 'The Calendar Events' section.
* @since TDB
*/
_toggleEventsSection: function () {
var form = $( '.fl-builder-settings' ),
tecEventsSection = form.find('#fl-builder-settings-section-events'),
tecEventsButtonSection = form.find('#fl-builder-settings-section-events_button'),
dataSource = form.find('#fl-field-data_source select').val(),
selectedPostTypes = form.find( '#fl-field-post_type' ).find('select').val();
if ( ( tecEventsSection.length <= 0 && tecEventsButtonSection.length <= 0 ) || 'custom_query' !== dataSource ) {
return;
}
if ( $.inArray( 'tribe_events', selectedPostTypes ) > -1 ) {
tecEventsSection.show();
tecEventsButtonSection.show();
} else {
tecEventsSection.hide();
tecEventsButtonSection.hide();
}
},
/**
* Toggle WooCommerce section.
* @since 2.6
*/
_toggleWooCommerceSection: function() {
var form = $('.fl-builder-settings'),
dataSource = form.find('#fl-field-data_source select').val(),
selectedPostTypes = form.find('#fl-field-post_type').find('select').val(),
wooSection = form.find('#fl-builder-settings-section-woo'),
wooStyleSection = form.find('#fl-builder-settings-section-woo_style'),
wooButtonSection = form.find('#fl-builder-settings-section-woo_button'),
isWooLayout = false;
if ( wooSection.length <= 0 ) {
return;
}
if ( 'main_query' === dataSource ) {
isWooLayout = 'fl-theme-layout' === FLBuilderConfig.postType && $('body').hasClass('woocommerce');
} else {
isWooLayout = $.inArray('product', selectedPostTypes ) > -1;
}
wooStyleSection = wooStyleSection.length ? wooStyleSection : form.find('#fl-builder-settings-tab-style #fl-builder-settings-section-woo');
if ( isWooLayout ) {
wooSection.show();
wooStyleSection.show();
wooButtonSection.show();
} else {
wooSection.hide();
wooStyleSection.hide();
wooButtonSection.hide();
}
},
/**
* Show Content Field Change event handler.
* @since 2.4.2
*/
_showContentChanged: function() {
var form = $('.fl-builder-settings'),
showContent = form.find('select[name=show_content]').val();
this._switchContentFields( '0' === showContent );
},
/**
* Show Content Field Change event handler.
* @since 2.4.2
*/
_featuredImageDependencyChanged: function() {
var form = $('.fl-builder-settings'),
layout = form.find( 'select[name=layout]' ).val(),
image = form.find( 'select[name=show_image]' ).val(),
showImage = form.find( '#fl-field-show_image' ),
imagePosition = form.find( '#fl-field-image_position' ),
gridImagePosition = form.find( '#fl-field-grid_image_position' ),
imageSize = form.find( '#fl-field-image_size' ),
gridImageSpacing = form.find( '#fl-field-grid_image_spacing' ),
imageSpacing = form.find( '#fl-field-image_spacing' ),
imageWidth = form.find( '#fl-field-image_width' ),
imageFallback = form.find( '#fl-field-image_fallback' );
showImage.hide();
imagePosition.hide();
gridImagePosition.hide();
imageSpacing.hide();
gridImageSpacing.hide();
imageSize.hide();
imageWidth.hide();
imageFallback.hide();
if ( 'columns' === layout || 'grid' === layout ) {
showImage.show();
if ( '1' === image ) {
gridImagePosition.show();
gridImageSpacing.show();
imageSize.show();
imageFallback.show();
}
} else if ( 'gallery' === layout ) {
imageFallback.show();
} else if ( 'feed' === layout ) {
showImage.show();
if ( '1' === image ) {
imagePosition.show();
imageSpacing.show();
imageWidth.show();
imageSize.show();
imageFallback.show();
}
}
},
_equalHeightImageDependency: function() {
var $form = $('.fl-builder-settings'),
layout = $form.find( 'select[name=layout]' ).val(),
equalHeightImage = $form.find( 'select[name=equal_height_image]' ).val(),
$equalHeightImage = $form.find( '#fl-field-equal_height_image' ),
$fixedHeightImage = $form.find( '#fl-field-image_height' ),
$imageRatio = $form.find( '#fl-field-image_aspect_ratio' );
$equalHeightImage.hide();
$fixedHeightImage.hide();
$imageRatio.hide();
if ( 'columns' === layout || 'grid' === layout ) {
$equalHeightImage.show();
if ( 'fixed' === equalHeightImage ) {
$fixedHeightImage.show();
} else if ( 'ratio' === equalHeightImage ) {
$imageRatio.show();
}
}
},
/**
* Update posts container element options list choices based on layout.
* @since 2.10
*/
_changePostContainer: function () {
const postsLayout = $( '.fl-builder-settings select[name=layout]' );
const postsContainer = $( '.fl-builder-settings select[name=posts_container]' );
if ( postsLayout.val() === 'columns' ) {
postsContainer.find( 'option[value="li"]' ).text( '<li>(wrapped in divs)' );
postsContainer.find( 'option[value="ul"]' ).show();
if ( 'li' === postsContainer.val() ) {
postsContainer.val( 'ul' );
}
}
else {
postsContainer.find( 'option[value="li"]' ).text( '<li>' );
postsContainer.find( 'option[value="ul"]' ).hide();
if ( 'ul' === postsContainer.val() ) {
postsContainer.val( 'li' );
}
}
},
/**
* Decide what to do with the Content Type and the Content Length fields
* depending on the layout.
* @since 2.4.2
*/
_switchContentFields: function( hide ) {
var form = $('.fl-builder-settings'),
layout = form.find('select[name=layout]').val(),
contentType = form.find('select[name=content_type]').val(),
contentTypeField = form.find('#fl-field-content_type'),
contentLengthField = form.find('#fl-field-content_length');
// Hide both fields when Content == '0' (Hide).
if ( hide ) {
contentTypeField.hide();
contentLengthField.hide();
return;
}
if( 'columns' === layout || 'grid' === layout ) {
contentTypeField.hide();
contentLengthField.show();
return;
}
if ( 'feed' === layout ) {
contentTypeField.show();
if ( 'full' === contentType ) {
contentLengthField.hide();
} else {
contentLengthField.show();
}
}
},
_flipSettings: function() {
var form = $( '.fl-builder-settings' ),
icon = form.find( 'input[name=icon]' );
if ( -1 !== icon.val().indexOf( 'fad fa') ) {
$('#fl-field-duo_color1').show();
$('#fl-field-duo_color2').show();
$('#fl-field-icon_color').hide();
$('#fl-field-hover_color').hide()
} else {
$('#fl-field-duo_color1').hide();
$('#fl-field-duo_color2').hide();
$('#fl-field-icon_color').show();
$('#fl-field-hover_color').show()
}
},
_resizeLayout: function( e ) {
clearTimeout( this.resizeTimeout );
this.resizeTimeout = setTimeout( this._doResizeLayout.bind( this ), 250 );
},
_doResizeLayout: function( e ) {
var form = $( '.fl-builder-settings' ),
layout = form.find( 'select[name=layout]' ).val(),
preview = FLBuilder.preview;
if ( 'grid' !== layout || ! preview ) {
return;
}
var masonry = preview.elements.node.find( '.fl-post-grid.masonry' ).data( 'masonry' );
if ( masonry && masonry.layout ) {
masonry.layout();
}
},
_previewButtonBackground: function( e ) {
var preview = FLBuilder.preview,
selector = preview.classes.node + ' .fl-button:is(a, button), ' + preview.classes.node + ' a.fl-button:visited',
form = $( '.fl-builder-settings:visible' ),
style = form.find( 'select[name=more_btn_style]' ).val(),
bgColor = form.find( 'input[name=more_btn_bg_color]' ).val();
if ( 'flat' === style ) {
if ( '' !== bgColor && bgColor.indexOf( 'rgb' ) < 0 ) {
bgColor = '#' + bgColor;
}
preview.updateCSSRule( selector, 'background-color', bgColor );
preview.updateCSSRule( selector, 'border-color', bgColor );
} else {
preview.delayPreview( e );
}
},
} );
} )( jQuery );