113 lines
2.7 KiB
JavaScript
113 lines
2.7 KiB
JavaScript
/* global FusionEvents */
|
|
/* eslint no-shadow: 0 */
|
|
var FusionPageBuilder = FusionPageBuilder || {};
|
|
|
|
( function( $ ) {
|
|
|
|
$( document ).ready( function() {
|
|
|
|
FusionPageBuilder.ModuleSettingsWidget = FusionPageBuilder.BaseWidgetSettingsView.extend( {
|
|
events: function() {
|
|
return _.extend( {}, FusionPageBuilder.ElementSettingsView.prototype.events, {
|
|
'change .fusion-widget-settings-form select': 'formOptionChange',
|
|
'change .fusion-widget-settings-form input': 'formOptionChange',
|
|
'change .fusion-widget-settings-form textarea': 'formOptionChange',
|
|
'change .fusion-widget-settings-form checkbox': 'formOptionChange'
|
|
} );
|
|
},
|
|
|
|
onInit: function() {
|
|
this.formTemplate = FusionPageBuilder.template( jQuery( '#fusion-builder-widget-settings-template' ).html() );
|
|
this.listenTo( FusionEvents, 'fusion-widget-changed', this.widgetChanged );
|
|
this._getWidgetMarkup = _.debounce( _.bind( this.getWidgetMarkup, this ), 500 );
|
|
this.registerWidgets();
|
|
},
|
|
|
|
onRender: function() {
|
|
if ( this.getWidget() && this.getWidget().isInvalid ) {
|
|
this.insertForm();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Debounce formOptionChange if no template.
|
|
*
|
|
* @since 2.0.0
|
|
* @param {Object} event - The JS event.
|
|
* @return {void}
|
|
*/
|
|
formOptionChange: function( event ) {
|
|
var $target,
|
|
$option,
|
|
paramName,
|
|
value,
|
|
widget;
|
|
|
|
if ( this.changesPaused ) {
|
|
return;
|
|
}
|
|
|
|
$target = jQuery( event.target ),
|
|
$option = $target.closest( '.fusion-builder-option' ),
|
|
paramName = this.getParamName( $target, $option );
|
|
widget = this.getWidget();
|
|
|
|
// Specific actions for invalid widgets
|
|
if ( widget.isInvalid ) {
|
|
paramName = this.createWidgetFieldName( widget.className, event.target.name );
|
|
}
|
|
|
|
if ( ! paramName ) {
|
|
return;
|
|
}
|
|
|
|
if ( $target.is( ':checkbox' ) ) {
|
|
value = $target.is( ':checked' ) ? $target.val() : '';
|
|
} else {
|
|
value = $target.val();
|
|
}
|
|
|
|
this.elementView.changeParam( paramName, value, '' );
|
|
this.elementView.addLoadingOverlay();
|
|
|
|
this._getWidgetMarkup();
|
|
},
|
|
|
|
/**
|
|
* Triggers calls to get the correct selected widget markup.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {void}
|
|
*/
|
|
getWidgetMarkup: function() {
|
|
this.elementView.contentView.getMarkup( this.elementView );
|
|
},
|
|
|
|
/**
|
|
* Handles widget event change.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {void}
|
|
*/
|
|
widgetChanged: function() {
|
|
this.clean();
|
|
this.setWidgetFields();
|
|
this.reRender();
|
|
},
|
|
|
|
/**
|
|
* Destroy the options.
|
|
*
|
|
* @since 2.0.0
|
|
* @returns {void}
|
|
*/
|
|
onDestroyOptions: function() {
|
|
this.destroyWidgetOptions();
|
|
}
|
|
|
|
} );
|
|
|
|
} );
|
|
|
|
}( jQuery ) );
|