49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
// External dependencies
|
|
import $ from 'jquery';
|
|
|
|
/**
|
|
* Toggle background-layout classname of current module and/or its child modules.
|
|
*
|
|
* @since 4.6.0
|
|
*
|
|
* @param {object} $module
|
|
* @param {bool} status
|
|
*/
|
|
export const toggleAllBackgroundLayoutClassnameOnSticky = ($module, status) => {
|
|
// Toggle background-layout classname if it is on current $module
|
|
if ($module.is($('[data-background-layout-sticky]'))) {
|
|
toggleBackgroundLayoutClassnameOnSticky($module, status);
|
|
}
|
|
|
|
// Toggle background-layout classname if it is child module of current module
|
|
if ($module.find('[data-background-layout-sticky]').length > 0) {
|
|
$module.find('[data-background-layout-sticky]').each(function() {
|
|
toggleBackgroundLayoutClassnameOnSticky($(this), status);
|
|
});
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Toggle background-layout classname of current module.
|
|
*
|
|
* @since 4.6.0
|
|
*
|
|
* @param {object} $module
|
|
* @param {bool} status
|
|
*/
|
|
export const toggleBackgroundLayoutClassnameOnSticky = ($module, status) => {
|
|
const attrPrefix = status ? '-sticky' : '';
|
|
const allClassnames = 'et_pb_bg_layout_dark et_pb_bg_layout_light';
|
|
const layoutColor = $module.attr(`data-background-layout${attrPrefix}`);
|
|
const layoutClassname = `et_pb_bg_layout_${layoutColor}`;
|
|
|
|
let $target = $module;
|
|
|
|
// Switch the target element for some modules.
|
|
if ($module.hasClass('et_pb_slide')) {
|
|
$target = $module.closest('.et_pb_slider');
|
|
}
|
|
|
|
$target.removeClass(allClassnames).addClass(layoutClassname);
|
|
};
|