PageSourceSearch

http://www.saffronhenderson.com/mskin/js/main.js

js saffronhenderson.com collected 2026-09-27 13:04:29 UTC 4,697 bytes, 132 lines download raw bytes

1jQuery(document).ready(function($){
2	//if you change this breakpoint in the style.css file (or _layout.scss if you use SASS), don't forget to update this value as well
3	var MqL = 1170;
4	//move nav element position according to window width
5	moveNavigation();
6	$(window).on('resize', function(){
7		(!window.requestAnimationFrame) ? setTimeout(moveNavigation, 300) : window.requestAnimationFrame(moveNavigation);
8	});
9
10	//mobile - open lateral menu clicking on the menu icon
11	$('.cd-nav-trigger').on('click', function(event){
12		event.preventDefault();
13		if( $('.cd-main-content').hasClass('nav-is-visible') ) {
14			closeNav();
15			$('.cd-overlay').removeClass('is-visible');
16		} else {
17			$(this).addClass('nav-is-visible');
18			$('.cd-primary-nav').addClass('nav-is-visible');
19			$('.cd-main-header').addClass('nav-is-visible');
20			$('.cd-main-content').addClass('nav-is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){
21				$('body').addClass('overflow-hidden');
22			});
23			toggleSearch('close');
24			$('.cd-overlay').addClass('is-visible');
25		}
26	});
27
28	//open search form
29	$('.cd-search-trigger').on('click', function(event){
30		event.preventDefault();
31		toggleSearch();
32		closeNav();
33	});
34
35	//close lateral menu on mobile 
36	$('.cd-overlay').on('swiperight', function(){
37		if($('.cd-primary-nav').hasClass('nav-is-visible')) {
38			closeNav();
39			$('.cd-overlay').removeClass('is-visible');
40		}
41	});
42	$('.nav-on-left .cd-overlay').on('swipeleft', function(){
43		if($('.cd-primary-nav').hasClass('nav-is-visible')) {
44			closeNav();
45			$('.cd-overlay').removeClass('is-visible');
46		}
47	});
48	$('.cd-overlay').on('click', function(){
49		closeNav();
50		toggleSearch('close')
51		$('.cd-overlay').removeClass('is-visible');
52	});
53
54
55	//prevent default clicking on direct children of .cd-primary-nav 
56	$('.cd-primary-nav').children('.has-children').children('a').on('click', function(event){
57		event.preventDefault();
58	});
59	//open submenu
60	$('.has-children').children('a').on('click', function(event){
61		if( !checkWindowWidth() ) event.preventDefault();
62		var selected = $(this);
63		if( selected.next('ul').hasClass('is-hidden') ) {
64			//desktop version only
65			selected.addClass('selected').next('ul').removeClass('is-hidden').end().parent('.has-children').parent('ul').addClass('moves-out');
66			selected.parent('.has-children').siblings('.has-children').children('ul').addClass('is-hidden').end().children('a').removeClass('selected');
67			$('.cd-overlay').addClass('is-visible');
68		} else {
69			selected.removeClass('selected').next('ul').addClass('is-hidden').end().parent('.has-children').parent('ul').removeClass('moves-out');
70			$('.cd-overlay').removeClass('is-visible');
71		}
72		toggleSearch('close');
73	});
74
75	//submenu items - go back link
76	$('.go-back').on('click', function(){
77		$(this).parent('ul').addClass('is-hidden').parent('.has-children').parent('ul').removeClass('moves-out');
78	});
79
80	function closeNav() {
81		$('.cd-nav-trigger').removeClass('nav-is-visible');
82		$('.cd-main-header').removeClass('nav-is-visible');
83		$('.cd-primary-nav').removeClass('nav-is-visible');
84		$('.has-children ul').addClass('is-hidden');
85		$('.has-children a').removeClass('selected');
86		$('.moves-out').removeClass('moves-out');
87		$('.cd-main-content').removeClass('nav-is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){
88			$('body').removeClass('overflow-hidden');
89		});
90	}
91
92	function toggleSearch(type) {
93		if(type=="close") {
94			//close serach 
95			$('.cd-search').removeClass('is-visible');
96			$('.cd-search-trigger').removeClass('search-is-visible');
97		} else {
98			//toggle search visibility
99			$('.cd-search').toggleClass('is-visible');
100			$('.cd-search-trigger').toggleClass('search-is-visible');
101			if($(window).width() > MqL && $('.cd-search').hasClass('is-visible')) $('.cd-search').find('input[type="search"]').focus();
102			($('.cd-search').hasClass('is-visible')) ? $('.cd-overlay').addClass('is-visible') : $('.cd-overlay').removeClass('is-visible') ;
103		}
104	}
105
106	function checkWindowWidth() {
107		//check window width (scrollbar included)
108		var e = window, 
109            a = 'inner';
110        if (!('innerWidth' in window )) {
111            a = 'client';
112            e = document.documentElement || document.body;
113        }
114        if ( e[ a+'Width' ] >= MqL ) {
115			return true;
116		} else {
117			return false;
118		}
119	}
120
121	function moveNavigation(){
122		var navigation = $('.cd-nav');
123  		var desktop = checkWindowWidth();
124        if ( desktop ) {
125			navigation.detach();
126			navigation.insertBefore('.cd-header-buttons');
127		} else {
128			navigation.detach();
129			navigation.insertAfter('.cd-main-content');
130		}
131	}
132});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.