File "one-page-nav.js"
Full path: /home/kosmetik/public_html/wp-content/plugins/powerpack-elements142/assets/js/one-page-nav.js
File
size: 6.23 B
MIME-type: text/plain
Charset: utf-8
Download Open Edit Advanced Editor Back
(function ($) {
"use strict";
var OnePageNavHandler = function ($scope, $) {
var onepage_nav_elem = $scope.find('.pp-one-page-nav').eq(0);
var $section_id = '#' + onepage_nav_elem.data('section-id'),
$top_offset = onepage_nav_elem.data('top-offset'),
$scroll_speed = onepage_nav_elem.data('scroll-speed'),
$scroll_wheel = onepage_nav_elem.data('scroll-wheel'),
$scroll_touch = onepage_nav_elem.data('scroll-touch'),
$scroll_keys = onepage_nav_elem.data('scroll-keys'),
$target_dot = $section_id + ' .pp-one-page-nav-item a',
$nav_item = $section_id + ' .pp-one-page-nav-item',
$active_item = $section_id + ' .pp-one-page-nav-item.active';
$( $target_dot ).on( 'click', function(e) {
e.preventDefault();
e.stopPropagation();
if( 0 === $( '#'+$(this).data('row-id') ).length ) {
return;
}
if ( $( 'html, body' ).is(':animated') ) {
return;
}
$( 'html, body' ).animate({
scrollTop: $( '#'+$(this).data('row-id') ).offset().top - $top_offset
}, $scroll_speed);
$( $section_id + ' .pp-one-page-nav-item' ).removeClass( 'active' );
$(this).parent().addClass( 'active' );
return false;
} );
updateDot();
$(window).on('scroll', function() {
updateDot();
});
function updateDot() {
$('.elementor-section').each(function(){
var $this = $(this);
if ( ( $this.offset().top - $(window).height()/2 < $(window).scrollTop() ) && ( $this.offset().top >= $(window).scrollTop() || $this.offset().top + $this.height() - $(window).height()/2 > $(window).scrollTop() ) ) {
$( $section_id + ' .pp-one-page-nav-item a[data-row-id="'+$this.attr('id')+'"]' ).parent().addClass('active');
} else {
$( $section_id + ' .pp-one-page-nav-item a[data-row-id="'+$this.attr('id')+'"]' ).parent().removeClass('active');
}
});
}
if ( $scroll_wheel == 'on' ) {
var lastAnimation = 0,
quietPeriod = 500,
animationTime = 800,
startX,
startY,
timestamp;
$(document).on('mousewheel DOMMouseScroll', function(e){
var timeNow = new Date().getTime();
if(timeNow - lastAnimation < quietPeriod + animationTime) {
e.preventDefault();
return;
}
//wDelta = e.wheelDelta < 0 ? 'down' : 'up';
var delta = e.originalEvent.detail < 0 || e.originalEvent.wheelDelta > 0 ? 1 : -1;
if ( !$("html,body").is(":animated") ) {
if ( delta < 0 ) {
if ( $( $active_item ).next().length > 0 ) {
$( $active_item ).next().find('a').trigger('click');
}
} else {
if ( $( $active_item ).prev().length > 0 ) {
$( $active_item ).prev().find('a').trigger('click');
}
}
}
lastAnimation = timeNow;
});
if ( $scroll_touch == 'on' ) {
$(document).on('pointerdown touchstart', function(e) {
var touches = e.originalEvent.touches;
if (touches && touches.length) {
startY = touches[0].screenY;
timestamp = e.originalEvent.timeStamp;
}
}).on('touchmove', function(e) {
if($("html,body").is(":animated")) {
e.preventDefault();
}
}).on('pointerup touchend', function(e) {
var touches = e.originalEvent;
if (touches.pointerType === 'touch' || e.type === 'touchend') {
var Y = touches.screenY || touches.changedTouches[0].screenY;
var deltaY = startY - Y;
var time = touches.timeStamp - timestamp;
// swipe up.
if (deltaY < 0) {
if ( $( $active_item ).prev().length > 0 ) {
$( $active_item ).prev().find('a').trigger('click');
}
}
// swipe down.
if (deltaY > 0) {
if ( $( $active_item ).next().length > 0 ) {
$( $active_item ).next().find('a').trigger('click');
}
}
if (Math.abs(deltaY) < 2) {
return;
}
}
});
}
}
if ( $scroll_keys == 'on' ) {
$(document).keydown(function(e) {
var tag = e.target.tagName.toLowerCase();
if (tag === 'input' && tag === 'textarea') {
return;
}
switch(e.which) {
case 38: // up arrow key.
$( $active_item ).prev().find('a').trigger('click');
break;
case 40: // down arrow key.
$( $active_item ).next().find('a').trigger('click');
break;
case 33: // pageup key.
$( $active_item ).prev().find('a').trigger('click');
break;
case 36: // pagedown key.
$( $active_item ).next().find('a').trigger('click');
break;
default: return;
}
});
}
};
$(window).on('elementor/frontend/init', function () {
elementorFrontend.hooks.addAction('frontend/element_ready/pp-one-page-nav.default', OnePageNavHandler);
});
}(jQuery));