2026-02-05 17:08:59 +03:00

167 lines
4.7 KiB
JavaScript

/* global FusionPageBuilderApp, FusionPageBuilderElements */
var FusionPageBuilder = FusionPageBuilder || {};
( function() {
FusionPageBuilder.DraggableHelpers = Backbone.Model.extend( {
/**
* Init.
*
* @since 2.0.0
* @return {void}
*/
initialize: function() {}, // eslint-disable-line no-empty-function
/**
* Get dragable classes.
*
* @since 2.0.0
* @param {string} cid - ID of model.
* @return {string}
*/
draggableClasses: function( cid ) {
var $element, $classes, $values, $parentCID, $parentElement;
$element = FusionPageBuilderElements.find( function( model ) {
return model.get( 'cid' ) == cid; // jshint ignore: line
} );
$values = _.fusionCleanParameters( jQuery.extend( true, {}, $element.get( 'params' ) ) );
$parentCID = $element.get( 'parent' );
$classes = '';
switch ( $element.get( 'type' ) ) {
case 'fusion_builder_container':
case 'fusion_builder_form_step':
case 'fusion_builder_next_page':
if ( 'undefined' !== typeof $values.fusion_global ) {
$classes = ' container-global-helper';
}
if ( 'yes' === $values.hundred_percent_height_scroll && 'yes' === $values.hundred_percent_height ) {
$classes = ' container-scrolling-helper';
}
break;
case 'fusion_builder_column':
if ( FusionPageBuilderApp.DraggableHelpers.isHeightScroll( $parentCID ) ) {
$classes = ' column-scrolling-helper';
}
if ( 'undefined' !== typeof $values.fusion_global || FusionPageBuilderApp.DraggableHelpers.isGlobalParent( $parentCID ) ) {
$classes = ' column-global-helper';
}
break;
case 'fusion_builder_row_inner':
$classes = ' row-inner-nested-helper';
if ( FusionPageBuilderApp.DraggableHelpers.isHeightScroll( $parentCID ) ) {
$classes = ' row-inner-scrolling-helper';
}
if ( 'undefined' !== typeof $values.fusion_global || FusionPageBuilderApp.DraggableHelpers.isGlobalParent( $parentCID ) ) {
$classes = ' row-inner-global-helper';
}
break;
case 'fusion_builder_column_inner':
$classes = ' column-inner-nested-helper';
if ( FusionPageBuilderApp.DraggableHelpers.isHeightScroll( $parentCID ) ) {
$classes = ' column-inner-scrolling-helper';
}
if ( 'undefined' !== typeof $values.fusion_global || FusionPageBuilderApp.DraggableHelpers.isGlobalParent( $parentCID ) ) {
$classes = ' column-inner-global-helper';
}
break;
case 'element':
$parentElement = FusionPageBuilderElements.find( function( model ) {
return model.get( 'cid' ) == $parentCID; // jshint ignore: line
} );
if ( 'fusion_builder_column_inner' === $parentElement.get( 'type' ) ) {
$classes = ' element-nested-helper';
}
if ( FusionPageBuilderApp.DraggableHelpers.isHeightScroll( $parentCID ) ) {
$classes = ' element-scrolling-helper';
}
if ( 'undefined' !== typeof $values.fusion_global || FusionPageBuilderApp.DraggableHelpers.isGlobalParent( $parentCID ) ) {
$classes = ' element-global-helper';
}
break;
}
return $classes;
},
/**
* Check if element has got global parent.
*
* @since 2.0.0
* @param {string} cid - The ID of parent model.
* @return {boolean}
*/
isGlobalParent: function( parentCID ) {
var $element, $values;
$element = FusionPageBuilderElements.find( function( model ) {
return model.get( 'cid' ) == parentCID; // jshint ignore: line
} );
if ( 'undefined' === typeof $element ) {
return false;
}
$values = _.fusionCleanParameters( jQuery.extend( true, {}, $element.get( 'params' ) ) );
if ( 'undefined' !== typeof $values.fusion_global ) {
return true;
}
if ( 'undefined' !== typeof $element.get( 'parent' ) ) {
return FusionPageBuilderApp.DraggableHelpers.isGlobalParent( $element.get( 'parent' ) );
}
return false;
},
/**
* Check if element is inside 100% scrolling height.
*
* @since 2.0.0
* @param {string} cid - The ID of parent model.
* @return {boolean}
*/
isHeightScroll: function( parentCID ) {
var $element, $values;
$element = FusionPageBuilderElements.find( function( model ) {
return model.get( 'cid' ) == parentCID; // jshint ignore: line
} );
if ( 'undefined' === typeof $element ) {
return false;
}
$values = _.fusionCleanParameters( jQuery.extend( true, {}, $element.get( 'params' ) ) );
if ( 'fusion_builder_container' === $element.get( 'type' ) && 'yes' === $values.hundred_percent_height_scroll && 'yes' === $values.hundred_percent_height ) {
return true;
}
if ( 'undefined' !== typeof $element.get( 'parent' ) ) {
return FusionPageBuilderApp.DraggableHelpers.isHeightScroll( $element.get( 'parent' ) );
}
return false;
}
} );
}( jQuery ) );