File: /home/deshuvsd/www/wp-content/plugins/ultimate-elementor/assets/js/uael-offcanvas.js
( function( $ ) {
var device_mode;
OffCanvas = {
/**
* Invoke Show Off-Canvas
*/
_show: function( canvas_id ) {
var $canvas_element = $( '#offcanvas-' + canvas_id );
var wrap_width = $canvas_element.width() + 'px';
var body = $( 'body' );
var html = $( 'html' );
/* If Off-Canvas at Left position */
if( $canvas_element.hasClass( 'position-at-left' ) ) {
body.css( 'margin-left' , '0' );
$canvas_element.css( 'left', '0' );
/* If Push Transition is enabled */
if( $canvas_element.hasClass( 'uael-offcanvas-type-push' ) ) {
body.addClass( 'uael-offcanvas-animating' ).css({
position: 'absolute',
width: '100%',
'margin-left' : wrap_width,
'margin-right' : 'auto'
});
}
$canvas_element.addClass( 'uael-offcanvas-show' );
} else {
body.css( 'margin-right', '0' );
$canvas_element.css( 'right', '0' );
/* If Push Transition is enabled */
if( $canvas_element.hasClass( 'uael-offcanvas-type-push' ) ) {
body.addClass( 'uael-offcanvas-animating' ).css({
position: 'absolute',
width: '100%',
'margin-left' : '-' + wrap_width,
'margin-right' : 'auto',
});
}
$canvas_element.addClass( 'uael-offcanvas-show' );
}
if( $canvas_element.hasClass( 'uael-offcanvas-scroll-disable' ) ) {
html.addClass( 'uael-offcanvas-enabled' );
}
device_mode = body.data( 'elementor-device-mode' );
if( 'mobile' == device_mode ){
html.addClass( 'uael-off-canvas-overlay' );
}
},
/**
* Invoke Close Off-Canvas
*/
_close: function( canvas_id ) {
var $canvas_element = $( '#offcanvas-' + canvas_id );
var wrap_width = $canvas_element.width() + 'px';
var body = $( 'body' );
var html = $( 'html' );
/* If Off-Canvas at Left position */
if( $canvas_element.hasClass( 'position-at-left' ) ) {
$canvas_element.css( 'left', '-' + wrap_width );
/* If Push Transition is enabled*/
if( $canvas_element.hasClass( 'uael-offcanvas-type-push' ) ) {
body.css({
position: '',
'margin-left' : '',
'margin-right' : '',
});
setTimeout( function() {
body.removeClass( 'uael-offcanvas-animating' ).css({
width: '',
});
}, 300 );
}
$canvas_element.removeClass( 'uael-offcanvas-show' );
} else {
$canvas_element.css( 'right', '-' + wrap_width );
/* If Push Transition is enabled */
if( $canvas_element.hasClass( 'uael-offcanvas-type-push' ) ) {
body.css({
position: '',
'margin-right' : '',
'margin-left' : '',
});
setTimeout( function() {
body.removeClass( 'uael-offcanvas-animating' ).css({
width: '',
});
}, 300 );
}
$canvas_element.removeClass( 'uael-offcanvas-show' );
}
html.removeClass( 'uael-offcanvas-enabled' );
device_mode = body.data( 'elementor-device-mode' );
if( 'mobile' == device_mode ){
html.removeClass( 'uael-off-canvas-overlay' );
}
},
}
/**
* Trigger open Off Canvas On Click Button/Icon
*/
$( document ).off( 'click.opentrigger' ).on( 'keyup click.opentrigger', '.uael-offcanvas-trigger', function(e) {
var canvas_id = $( this ).closest( '.elementor-element' ).data( 'id' );
var selector = $( '.uaoffcanvas-' + canvas_id );
var trigger_on = selector.data( 'trigger-on' );
if( 'icon' == trigger_on || 'button' == trigger_on ) {
if( 'keyup' == e.type ) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
OffCanvas._show( canvas_id );
}
} else {
OffCanvas._show( canvas_id );
}
}
} );
/*
* uael_offcanvas_init trigger
*/
$( document ).on( 'uael_offcanvas_init', function( e, node_id ) {
/*
* Close on ESC
*/
$( document).on( 'keyup', function(e) {
if ( e.keyCode == 27 )
{
$( '.uael-offcanvas-parent-wrapper' ).each( function() {
var $this = $( this );
var canvas_id = $this.closest( '.elementor-element' ).data( 'id' );
var close_on_esc = $this.data( 'close-on-esc' );
if( 'yes' == close_on_esc ) {
OffCanvas._close( canvas_id );
}
});
}
});
/**
* Close on Icon
*/
$( '.uael-offcanvas-close' ).on( 'click', function () {
var canvas_id = $( this ).closest( '.elementor-element' ).data( 'id' );
OffCanvas._close( canvas_id );
});
/**
* Close On Overlay Click
*/
$( '.uael-offcanvas-overlay' ).off('click.overlaytrigger').on( 'click.overlaytrigger', function( e ) {
$( '.uael-offcanvas-parent-wrapper' ).each( function() {
var $this = $( this );
var canvas_id = $this.closest( '.elementor-element' ).data( 'id' );
var close_on_overlay = $this.data( 'close-on-overlay' );
if( 'yes' == close_on_overlay ) {
OffCanvas._close( canvas_id );
}
});
});
/**
* If Preview-Mode is ON
*/
if( $( '#offcanvas-' + node_id ).hasClass( 'uael-show-preview' ) ) {
setTimeout( function() {
OffCanvas._show( node_id );
}, 400 );
} else {
setTimeout( function() {
OffCanvas._close( node_id );
}, 400 );
}
} );
/* On Load page event */
$( document ).ready( function( e ) {
$( '.uael-offcanvas-parent-wrapper' ).each( function() {
var $this = $( this );
var tmp_id = $this.attr( 'id' );
var canvas_id = tmp_id.replace( '-overlay', '' );
var trigger_on = $this.data( 'trigger-on' );
var custom = $this.data( 'custom' );
var custom_id = $this.data( 'custom-id' );
// Custom Class click event
if( 'custom' == trigger_on ) {
if( 'undefined' != typeof custom && '' != custom ) {
var custom_selectors = custom.split( ',' );
if( custom_selectors.length > 0 ) {
for( var i = 0; i < custom_selectors.length; i++ ) {
if( 'undefined' != typeof custom_selectors[i] && '' != custom_selectors[i] ) {
$( '.' + custom_selectors[i] ).css( "cursor", "pointer" );
$( document ).on( 'click', '.' + custom_selectors[i], function() {
OffCanvas._show( canvas_id );
} );
}
}
}
}
}
// Custom ID click event
if( 'custom_id' == trigger_on ) {
if( 'undefined' != typeof custom_id && '' != custom_id ) {
var custom_selectors = custom_id.split( ',' );
if( custom_selectors.length > 0 ) {
for( var i = 0; i < custom_selectors.length; i++ ) {
if( 'undefined' != typeof custom_selectors[i] && '' != custom_selectors[i] ) {
$( '#' + custom_selectors[i] ).css( "cursor", "pointer" );
$( document ).on( 'click', '#' + custom_selectors[i], function() {
OffCanvas._show( canvas_id );
} );
}
}
}
}
}
} );
} );
/**
* Off-Canvas handler Function.
*
*/
var WidgetOffCanvasHandler = function( $scope, $ ) {
if ( 'undefined' == typeof $scope )
return;
var id = $scope.data( 'id' );
var parent_wrap = $scope.find( '.uael-offcanvas-parent-wrapper' );
var wrap_menu_item = parent_wrap.data( 'wrap-menu-item' );
if ( $scope.hasClass('elementor-hidden-desktop') ) {
parent_wrap.addClass( 'uael-offcanvas-hide-desktop' );
}
if ( $scope.hasClass('elementor-hidden-tablet') ) {
parent_wrap.addClass( 'uael-offcanvas-hide-tablet' );
}
if ( $scope.hasClass('elementor-hidden-phone') ) {
parent_wrap.addClass( 'uael-offcanvas-hide-phone' );
}
$( document ).trigger( 'uael_offcanvas_init', [ $scope.data( 'id' ) ] );
if( 'yes' == wrap_menu_item ) {
$scope.find( 'div.uael-offcanvas-has-submenu-container' ).removeClass( 'uael-offcanvas-sub-menu-active' );
// Wrap submenu JS.
$scope.find( '.sub-menu' ).each( function() {
var parent = $( this ).closest( '.menu-item' );
$scope.find( parent ).addClass( 'uael-offcanvas-parent-has-child' );
});
var submenu_container = $scope.find( '.uael-offcanvas-parent-has-child .uael-offcanvas-has-submenu-container a' );
submenu_container.attr( 'aria-haspopup', 'true' );
submenu_container.attr( 'aria-expanded', 'false' );
// On parent menu link
$( '.elementor-element-' + id + ' div.uael-offcanvas-has-submenu-container' ).off( 'click' ).on( 'click', function( event ) {
var $this = $( this );
if( $( '.elementor-element-' + id ).hasClass( 'uael-off-canvas-link-redirect-child' ) ) {
if( $this.hasClass( 'uael-offcanvas-sub-menu-active' ) ) {
if( ! $this.next().hasClass( 'uael-offcanvas-sub-menu-open' ) ) {
event.preventDefault();
$this.find( 'a' ).attr( 'aria-expanded', 'false' );
$this.removeClass( 'uael-offcanvas-sub-menu-active' );
$this.next().removeClass( 'uael-offcanvas-sub-menu-open' );
} else {
$this.find( 'a' ).attr( 'aria-expanded', 'false' );
$this.removeClass( 'uael-offcanvas-sub-menu-active' );
$this.next().removeClass( 'uael-offcanvas-sub-menu-open' );
}
} else {
event.preventDefault();
$this.find( 'a' ).attr( 'aria-expanded', 'true' );
$this.addClass( 'uael-offcanvas-sub-menu-active' );
$this.next().addClass( 'uael-offcanvas-sub-menu-open' );
}
}
});
// On icon click
$( '.elementor-element-' + id + ' .uael-offcanvas-menu-toggle' ).off( 'click keyup' ).on( 'click keyup', function( event ) {
var $this = $( this );
var active_menu = $this.parent().parent();
var active_toggle = $this.parent();
if( $this.parent().parent().hasClass( 'uael-offcanvas-menu-active' ) ) {
event.preventDefault();
active_menu.removeClass( 'uael-offcanvas-menu-active' );
active_toggle.attr( 'aria-expanded', 'false' );
} else {
event.preventDefault();
active_menu.addClass( 'uael-offcanvas-menu-active' );
active_toggle.attr( 'aria-expanded', 'true' );
}
});
}
};
$( window ).on( 'elementor/frontend/init', function () {
elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-offcanvas.default', WidgetOffCanvasHandler );
});
} )( jQuery );