368 lines
12 KiB
JavaScript
368 lines
12 KiB
JavaScript
/* global screenReaderText */
|
|
/**
|
|
* File navigation.js.
|
|
*
|
|
* Handles toggling the navigation menu for small screens and enables TAB key
|
|
* navigation support for dropdown menus.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
var container, button, menu, links, subMenus, i, len;
|
|
|
|
container = document.getElementById('site-navigation');
|
|
if (!container) {
|
|
return;
|
|
}
|
|
|
|
button = container.parentNode.getElementsByTagName('button')[0];
|
|
if ('undefined' === typeof button) {
|
|
return;
|
|
}
|
|
|
|
menu = container.getElementsByTagName('ul')[0];
|
|
|
|
// Hide menu toggle button if menu is empty and return early.
|
|
if ('undefined' === typeof menu) {
|
|
button.style.display = 'none';
|
|
return;
|
|
}
|
|
|
|
menu.setAttribute('aria-expanded', 'false');
|
|
if (-1 === menu.className.indexOf('nav-menu')) {
|
|
menu.className += ' nav-menu';
|
|
}
|
|
|
|
button.onclick = function () {
|
|
if (-1 !== container.className.indexOf('toggled')) {
|
|
container.className = container.className.replace(' toggled', '');
|
|
button.setAttribute('aria-expanded', 'false');
|
|
menu.setAttribute('aria-expanded', 'false');
|
|
} else {
|
|
container.className += ' toggled';
|
|
button.setAttribute('aria-expanded', 'true');
|
|
menu.setAttribute('aria-expanded', 'true');
|
|
}
|
|
};
|
|
|
|
// Get all the link elements within the menu.
|
|
links = menu.getElementsByTagName('a');
|
|
subMenus = menu.getElementsByTagName('ul');
|
|
|
|
// Set menu items with submenus to aria-haspopup="true".
|
|
len = subMenus.length;
|
|
for (i = 0; i < len; i++) {
|
|
subMenus[i].parentNode.setAttribute('aria-haspopup', 'true');
|
|
}
|
|
|
|
// Each time a menu link is focused or blurred, toggle focus.
|
|
len = links.length;
|
|
for (i = 0; i < len; i++) {
|
|
links[i].addEventListener('focus', toggleFocus, true);
|
|
links[i].addEventListener('blur', toggleFocus, true);
|
|
}
|
|
|
|
/**
|
|
* Sets or removes .focus class on an element.
|
|
*/
|
|
function toggleFocus(){
|
|
/*jshint validthis: true */
|
|
var self = this;
|
|
|
|
// Move up through the ancestors of the current link until we hit .nav-menu.
|
|
while (-1 === self.className.indexOf('nav-menu')) {
|
|
|
|
// On li elements toggle the class .focus.
|
|
if ('li' === self.tagName.toLowerCase()) {
|
|
if (-1 !== self.className.indexOf('focus')) {
|
|
self.className = self.className.replace(' focus', '');
|
|
} else {
|
|
self.className += ' focus';
|
|
}
|
|
}
|
|
|
|
self = self.parentElement;
|
|
}
|
|
}
|
|
|
|
})();
|
|
|
|
|
|
/**
|
|
* Those two functions are global because they need to be accesible from customizer.js
|
|
*/
|
|
function theMotion_header_social_icons_width() {
|
|
'use strict';
|
|
var totalWidth = 0;
|
|
jQuery('.header-social-icons li').each(function () {
|
|
totalWidth += jQuery(this).outerWidth();
|
|
});
|
|
jQuery('.header-social-icons').css('width', totalWidth + 10);
|
|
}
|
|
|
|
function theMotion_menu_toggle_height() {
|
|
'use strict';
|
|
var menuToggleBtn = jQuery('button.menu-toggle');
|
|
var siteHeader = jQuery('.site-header');
|
|
if (!menuToggleBtn) {
|
|
return false;
|
|
}
|
|
menuToggleBtn.css('min-height', '1px');
|
|
menuToggleBtn.css('min-height', siteHeader.outerHeight());
|
|
}
|
|
|
|
function theMotion_video_height() {
|
|
'use strict';
|
|
var videoIframe = jQuery('.post-single iframe[src*="youtube"], .post-single iframe[src*="vimeo"]');
|
|
if(typeof videoIframe !== 'undefined') {
|
|
var videoWidth = videoIframe.width();
|
|
if(typeof videoWidth !== 'undefined' ) {
|
|
var necessaryHeight = (videoWidth / 16) * 9;
|
|
if (typeof necessaryHeight !== 'undefined') {
|
|
videoIframe.css({'height': necessaryHeight + 'px'});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
(function ($) {
|
|
'use strict';
|
|
$(document).ready(function () {
|
|
theMotion_header_social_icons_width();
|
|
theMotion_menu_toggle_height();
|
|
theMotion_video_height();
|
|
});
|
|
|
|
$(window).resize(function () {
|
|
theMotion_header_social_icons_width();
|
|
theMotion_menu_toggle_height();
|
|
theMotion_video_height();
|
|
});
|
|
|
|
|
|
jQuery('.search-opt, .search-quit').click(function () {
|
|
jQuery('.header-search').fadeToggle('fast', 'linear');
|
|
});
|
|
|
|
|
|
$('html').click(function () {
|
|
$('.search-toggle-open').removeClass('search-toggle-open');
|
|
$('.search-opt').addClass('search-toggle');
|
|
});
|
|
|
|
})(jQuery);
|
|
|
|
|
|
//ACCESSIBILITY MENU
|
|
(function ($) {
|
|
'use strict';
|
|
function initMainNavigation(container) {
|
|
// Add dropdown toggle that display child menu items.
|
|
container.find('.menu-item-has-children > a').after('<button class="dropdown-toggle" aria-expanded="false"><span class="dropdown-toggle-inner">' + screenReaderText.expand + '</span></button>');
|
|
|
|
// Toggle buttons and submenu items with active children menu items.
|
|
container.find('.current-menu-ancestor > button').addClass('toggled-on');
|
|
container.find('.current-menu-ancestor > .sub-menu').addClass('toggled-on');
|
|
|
|
// Add menu items with submenus to aria-haspopup="true".
|
|
container.find('.menu-item-has-children').attr('aria-haspopup', 'true');
|
|
|
|
container.find('.dropdown-toggle').click(function (e) {
|
|
var _this = $(this);
|
|
e.preventDefault();
|
|
_this.toggleClass('toggled-on');
|
|
_this.next('.children, .sub-menu').toggleClass('toggled-on');
|
|
_this.attr('aria-expanded', _this.attr('aria-expanded') === 'false' ? 'true' : 'false');
|
|
_this.find('.dropdown-toggle-inner').html(_this.html() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand);
|
|
});
|
|
}
|
|
|
|
initMainNavigation($('.main-navigation'));
|
|
|
|
var masthead = $('#masthead');
|
|
var menuToggle = masthead.find('#menu-toggle');
|
|
var siteHeaderMenu = masthead.find('#site-header-menu');
|
|
var siteNavigation = masthead.find('#site-navigation');
|
|
|
|
// Enable menuToggle.
|
|
(function () {
|
|
// Return early if menuToggle is missing.
|
|
if (!menuToggle) {
|
|
return;
|
|
}
|
|
|
|
// Add an initial values for the attribute.
|
|
menuToggle.click(function () {
|
|
$(this).add(siteHeaderMenu).toggleClass('toggled-on');
|
|
});
|
|
})();
|
|
|
|
|
|
// Fix sub-menus for touch devices and better focus for hidden submenu items for accessibility.
|
|
(function () {
|
|
if (!siteNavigation || !siteNavigation.children().length) {
|
|
return;
|
|
}
|
|
|
|
if ('ontouchstart' in window) {
|
|
siteNavigation.find('.menu-item-has-children > a').on('touchstart.themotion', function (e) {
|
|
var el = $(this).parent('li');
|
|
if (!el.hasClass('focus')) {
|
|
e.preventDefault();
|
|
el.toggleClass('focus');
|
|
el.siblings('.focus').removeClass('focus');
|
|
}
|
|
});
|
|
}
|
|
|
|
siteNavigation.find('a').on('focus.themotion blur.themotion', function () {
|
|
$(this).parents('.menu-item').toggleClass('focus');
|
|
});
|
|
})();
|
|
|
|
|
|
// Add he default ARIA attributes for the menu toggle and the navigations.
|
|
function onResizeARIA() {
|
|
if (910 > window.innerWidth) {
|
|
if (menuToggle.hasClass('toggled-on')) {
|
|
menuToggle.attr('aria-expanded', 'true');
|
|
} else {
|
|
menuToggle.attr('aria-expanded', 'false');
|
|
}
|
|
|
|
if (siteHeaderMenu.hasClass('toggled-on')) {
|
|
siteNavigation.attr('aria-expanded', 'true');
|
|
} else {
|
|
siteNavigation.attr('aria-expanded', 'false');
|
|
}
|
|
|
|
menuToggle.attr('aria-controls', 'site-navigation social-navigation');
|
|
} else {
|
|
menuToggle.removeAttr('aria-expanded');
|
|
siteNavigation.removeAttr('aria-expanded');
|
|
menuToggle.removeAttr('aria-controls');
|
|
}
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
$(window).on('load.themotion', onResizeARIA);
|
|
|
|
if ($('footer').find('.widget_siteorigin-panels-builder').length > 0) {
|
|
$('footer').find('.widget-columns').removeClass();
|
|
}
|
|
});
|
|
|
|
|
|
})(jQuery);
|
|
|
|
|
|
jQuery(document).ready(function ($) {
|
|
|
|
'use strict';
|
|
$('#myCarousel').carousel({
|
|
interval: false
|
|
});
|
|
|
|
//Handles the carousel thumbnails
|
|
var lastItemPlayingId = -1;
|
|
$('[id^=carousel-selector-]').click(function () {
|
|
var id = $(this).attr('data-id');
|
|
$('.themotion-playlist-item').removeClass('themotion-playlist-playing');
|
|
$(this).addClass('themotion-playlist-playing');
|
|
$('.item').removeClass('active');
|
|
var thisItem = $('.slide-number-' + id);
|
|
var lastItem = lastItemPlayingId !== -1 ? $('.slide-number-' + lastItemPlayingId) : false;
|
|
thisItem.addClass('active');
|
|
thisItem.trigger('resize');
|
|
if( lastItem ) {
|
|
var lastItemIframe = lastItem.find('iframe').length > 0 ? lastItem.find('iframe') : 'undefined_item';
|
|
var lastItemVideo = lastItem.find('video').length > 0 ? lastItem.find('video') : 'undefined_item';
|
|
videoStop( lastItemIframe, lastItemVideo );
|
|
}
|
|
var itemIframe = thisItem.find( 'iframe' ).length > 0 ? thisItem.find( 'iframe' ) : 'undefined_item';
|
|
var itemVideo = thisItem.find( 'video' ).length > 0 ? thisItem.find( 'video' ) : 'undefined_item';
|
|
videoPlay( itemIframe, itemVideo );
|
|
lastItemPlayingId = id;
|
|
});
|
|
|
|
$('.themotion-scroll-to-section').click(function () {
|
|
var anchor = $(this).attr('data-anchor');
|
|
var offset = -60;
|
|
$('html, body').animate({
|
|
scrollTop: $(anchor).offset().top + offset
|
|
}, 1200);
|
|
});
|
|
|
|
var iframe = 'undefined_item', video = 'undefined_item';
|
|
$('.themotion-video-play-button').click( function() {
|
|
|
|
var thisLightbox = $(this).parent().next('.themotion-lightbox');
|
|
thisLightbox.fadeToggle();
|
|
|
|
iframe = thisLightbox.find( 'iframe' ).length > 0 ? thisLightbox.find( 'iframe' ) : 'undefined_item';
|
|
video = thisLightbox.find( 'video' ).length > 0 ? thisLightbox.find( 'video' ) : 'undefined_item';
|
|
|
|
videoPlay( iframe, video );
|
|
var itemActive = $( '.carousel-inner .item.active' );
|
|
var itemActiveIframe = itemActive.find( 'iframe' ).length > 0 ? itemActive.find( 'iframe' ) : 'undefined_item';
|
|
var itemActiveVideo = itemActive.find( 'video' ).length > 0 ? itemActive.find( 'video' ) : 'undefined_item';
|
|
|
|
if( 'undefined_item' !== itemActiveIframe ) {
|
|
var url = itemActiveIframe.attr( 'src' );
|
|
var newUrl = url.replace( 'autoplay=1', 'autoplay=0' );
|
|
itemActiveIframe.attr( 'src', newUrl );
|
|
} else if( 'undefined_item' !== itemActiveVideo ) {
|
|
itemActiveVideo.get(0).stop();
|
|
itemActiveVideo.get(0).currentTime = 0;
|
|
}
|
|
|
|
} );
|
|
|
|
$('.themotion-lightbox').click(function() {
|
|
$(this).fadeOut();
|
|
videoStop( iframe, video );
|
|
} );
|
|
|
|
function videoPlay( iframe, video ) {
|
|
if( iframe !== 'undefined_item' ) {
|
|
// youtube or vimeo
|
|
if( iframe.attr('src') !== '' ){
|
|
var iframeLink = iframe.attr('src');
|
|
var linkAutoplay;
|
|
if( iframeLink.indexOf( 'autoplay' ) === -1 ) {
|
|
linkAutoplay = iframeLink + ( iframeLink.indexOf('?') === -1 ? '?' : '&' ) + 'autoplay=1';
|
|
|
|
} else {
|
|
linkAutoplay = iframeLink;
|
|
}
|
|
iframe.attr('src', linkAutoplay);
|
|
} else {
|
|
var dataSrc = iframe.attr('data-themotionsrc');
|
|
var dataSrcNew = ( dataSrc.indexOf( 'autoplay=0' ) !== -1 ) ? dataSrc.replace('autoplay=0', 'autoplay=1') : dataSrc;
|
|
iframe.attr('src', dataSrcNew );
|
|
}
|
|
} else if ( video !== 'undefined_item' ){
|
|
// video
|
|
video.get(0).play();
|
|
video.trigger('resize');
|
|
}
|
|
}
|
|
|
|
function videoStop( iframe, video ) {
|
|
if( iframe !== 'undefined_item' ) {
|
|
iframe.attr( 'data-themotionsrc', iframe.attr('src') ).attr('src', '');
|
|
} else if ( video !== 'undefined_item' ){
|
|
video.get(0).stop();
|
|
video.get(0).currentTime = 0;
|
|
}
|
|
}
|
|
|
|
$('.themotion-lightbox-inner').click(function(event){
|
|
event.stopPropagation();
|
|
});
|
|
|
|
$('.themotion-show-on-click').click(function(){
|
|
$(this).next().show();
|
|
$(this).replaceWith(', ');
|
|
});
|
|
|
|
}); |