/// js /// jQuery(document).ready(function($){ var dragging = false, scrolling = false, resizing = false; //cache jQuery objects var imageComparisonContainers = $('.cd-image-container'); //check if the .cd-image-container is in the viewport //if yes, animate it checkPosition(imageComparisonContainers); $(window).on('scroll', function(){ if( !scrolling) { scrolling = true; ( !window.requestAnimationFrame ) ? setTimeout(function(){checkPosition(imageComparisonContainers);}, 100) : requestAnimationFrame(function(){checkPosition(imageComparisonContainers);}); } }); //make the .cd-handle element draggable and modify .cd-resize-img width according to its position imageComparisonContainers.each(function(){ var actual = $(this); drags(actual.find('.cd-handle'), actual.find('.cd-resize-img'), actual, actual.find('.cd-image-label[data-type="original"]'), actual.find('.cd-image-label[data-type="modified"]')); }); //upadate images label visibility $(window).on('resize', function(){ if( !resizing) { resizing = true; ( !window.requestAnimationFrame ) ? setTimeout(function(){checkLabel(imageComparisonContainers);}, 100) : requestAnimationFrame(function(){checkLabel(imageComparisonContainers);}); } }); function checkPosition(container) { container.each(function(){ var actualContainer = $(this); if( $(window).scrollTop() + $(window).height()*0.5 > actualContainer.offset().top) { actualContainer.addClass('is-visible'); } }); scrolling = false; } function checkLabel(container) { container.each(function(){ var actual = $(this); updateLabel(actual.find('.cd-image-label[data-type="modified"]'), actual.find('.cd-resize-img'), 'left'); updateLabel(actual.find('.cd-image-label[data-type="original"]'), actual.find('.cd-resize-img'), 'right'); }); resizing = false; } //draggable funtionality - function drags(dragElement, resizeElement, container, labelContainer, labelResizeElement) { dragElement.on("mousedown vmousedown", function(e) { dragElement.addClass('draggable'); resizeElement.addClass('resizable'); var dragWidth = dragElement.outerWidth(), xPosition = dragElement.offset().left + dragWidth - e.pageX, containerOffset = container.offset().left, containerWidth = container.outerWidth(), minLeft = containerOffset + 10, maxLeft = containerOffset + containerWidth - dragWidth - 10; dragElement.parents().on("mousemove vmousemove", function(e) { if( !dragging) { dragging = true; ( !window.requestAnimationFrame ) ? setTimeout(function(){animateDraggedHandle(e, xPosition, dragWidth, minLeft, maxLeft, containerOffset, containerWidth, resizeElement, labelContainer, labelResizeElement);}, 100) : requestAnimationFrame(function(){animateDraggedHandle(e, xPosition, dragWidth, minLeft, maxLeft, containerOffset, containerWidth, resizeElement, labelContainer, labelResizeElement);}); } }).on("mouseup vmouseup", function(e){ dragElement.removeClass('draggable'); resizeElement.removeClass('resizable'); }); e.preventDefault(); }).on("mouseup vmouseup", function(e) { dragElement.removeClass('draggable'); resizeElement.removeClass('resizable'); }); } function animateDraggedHandle(e, xPosition, dragWidth, minLeft, maxLeft, containerOffset, containerWidth, resizeElement, labelContainer, labelResizeElement) { var leftValue = e.pageX + xPosition - dragWidth; //constrain the draggable element to move inside his container if(leftValue < minLeft ) { leftValue = minLeft; } else if ( leftValue > maxLeft) { leftValue = maxLeft; } var widthValue = (leftValue + dragWidth/2 - containerOffset)*100/containerWidth+'%'; $('.draggable').css('left', widthValue).on("mouseup vmouseup", function() { $(this).removeClass('draggable'); resizeElement.removeClass('resizable'); }); $('.resizable').css('width', widthValue); updateLabel(labelResizeElement, resizeElement, 'left'); updateLabel(labelContainer, resizeElement, 'right'); dragging = false; } function updateLabel(label, resizeElement, position) { if(position == 'left') { ( label.offset().left + label.outerWidth() < resizeElement.offset().left + resizeElement.outerWidth() ) ? label.removeClass('is-hidden') : label.addClass('is-hidden') ; } else { ( label.offset().left > resizeElement.offset().left + resizeElement.outerWidth() ) ? label.removeClass('is-hidden') : label.addClass('is-hidden') ; } } }); jQuery(document).ready(function($) { var menu_toggle = $('.menu-toggle'); var nav_menu = $('.main-navigation ul.nav-menu'); // Primary Menu menu_toggle.click(function(){ $(this).toggleClass('active'); nav_menu.slideToggle(); $('button.dropdown-toggle').removeClass('active'); $('.main-navigation ul ul').slideUp(); $('body').toggleClass('body-overlay'); }); $('.main-navigation .nav-menu .menu-item-has-children > a').after( $('') ); $('button.dropdown-toggle').click(function() { $(this).toggleClass('active'); $(this).parent().find('.sub-menu').first().slideToggle(); }); if( $('.main-navigation a i').hasClass('wpmi-icon') ) { $('.main-navigation').addClass('icons-active'); } // Keyboard Navigation if( $(window).width() < 1024 ) { nav_menu.find("li").last().bind( 'keydown', function(e) { if( !e.shiftKey && e.which === 9 ) { e.preventDefault(); $('#masthead').find('.menu-toggle').focus(); } }); } else { nav_menu.find("li").unbind('keydown'); } $(window).resize(function() { if( $(window).width() < 1024 ) { nav_menu.find("li").last().bind( 'keydown', function(e) { if( !e.shiftKey && e.which === 9 ) { e.preventDefault(); $('#masthead').find('.menu-toggle').focus(); } }); } else { nav_menu.find("li").unbind('keydown'); } }); menu_toggle.on('keydown', function (e) { var tabKey = e.keyCode === 9; console.log('tabKey', tabKey) var shiftKey = e.shiftKey; if( menu_toggle.hasClass('active') ) { if ( shiftKey && tabKey ) { e.preventDefault(); nav_menu.find("li:last-child > a").focus(); nav_menu.find("li").last().bind( 'keydown', function(e) { if( !e.shiftKey && e.which === 9 ) { e.preventDefault(); $('#masthead').find('.menu-toggle').focus(); } }); }; } }); jQuery('.main-navigation ul.nav-menu li').on('keydown', 'button.dropdown-toggle:not(.active)', function (event) { // button:not(.active):last const tabKey = event.keyCode === 9 // console.log('event.target', event.target) const $dropdown_toggle = jQuery(event.target) // console.log('$dropdown_toggle', $dropdown_toggle) const $dropdown_toggle_last = jQuery('.main-navigation ul.nav-menu li button.dropdown-toggle:not(.active):visible:last') // console.log('$dropdown_toggle_last', $dropdown_toggle_last) // console.log('compare', $dropdown_toggle[0] == $dropdown_toggle_last[0]) if (tabKey && ($dropdown_toggle[0] == $dropdown_toggle_last[0])) { event.preventDefault() $('#masthead').find('.menu-toggle').focus() } }) // Slick Slider jQuery('#featured-slider .section-content').slick({ responsive: [{ breakpoint: 1024, settings: { slidesToShow: 1, } }, { breakpoint: 600, settings: { slidesToShow: 1, } }, { breakpoint: 300, slidesToShow: 1 // destroys slick }] }); }); window.addEventListener('load', (event) => { jQuery(".preloader").delay(1000).fadeOut("slow"); }); var btn = jQuery('#button'); jQuery(window).scroll(function() { if (jQuery(window).scrollTop() > 300) { btn.addClass('show'); } else { btn.removeClass('show'); } }); btn.on('click', function(e) { e.preventDefault(); jQuery('html, body').animate({scrollTop:0}, '300'); }); jQuery(window).scroll(function() { var data_sticky = jQuery(' #header-box').attr('data-sticky'); if (data_sticky == 1) { if (jQuery(this).scrollTop() > 1){ jQuery('#header-box').addClass("sticky-head"); } else { jQuery('#header-box').removeClass("sticky-head"); } } }); function preloderFunction() { setTimeout(function() { document.getElementById("page-top").scrollIntoView(); $('#ctn-preloader').addClass('loaded'); // Once the preloader has finished, the scroll appears $('body').removeClass('no-scroll-y'); if ($('#ctn-preloader').hasClass('loaded')) { // It is so that once the preloader is gone, the entire preloader section will removed $('#preloader').delay(1000).queue(function() { $(this).remove(); // If you want to do something after removing preloader: afterLoad(); }); } }, 3000); } function afterLoad() { // After Load function body! }