Include custom js, added js namespace

This commit is contained in:
Silvio Giebl 2019-05-19 20:40:54 +02:00
parent 96653f6d36
commit 008809e00b
2 changed files with 28 additions and 23 deletions

0
assets/js/_custom.js Normal file
View File

View File

@ -1,23 +1,34 @@
--- ---
--- ---
(function (jtd, undefined) {
// Event handling // Event handling
function addEvent(el, type, handler) { jtd.addEvent = function(el, type, handler) {
if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);
} }
function removeEvent(el, type, handler) { jtd.removeEvent = function(el, type, handler) {
if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);
} }
jtd.onReady = function(ready) {
// in case the document is already rendered
if (document.readyState!='loading') ready();
// modern browsers
else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready);
// IE <= 8
else document.attachEvent('onreadystatechange', function(){
if (document.readyState=='complete') ready();
});
}
// Show/hide mobile menu // Show/hide mobile menu
function toggleNav(){ function initNav() {
const mainNav = document.querySelector('.js-main-nav'); const mainNav = document.querySelector('.js-main-nav');
const pageHeader = document.querySelector('.js-page-header'); const pageHeader = document.querySelector('.js-page-header');
const navTrigger = document.querySelector('.js-main-nav-trigger'); const navTrigger = document.querySelector('.js-main-nav-trigger');
addEvent(navTrigger, 'click', function(e){ jtd.addEvent(navTrigger, 'click', function(e){
e.preventDefault(); e.preventDefault();
var text = navTrigger.innerText; var text = navTrigger.innerText;
var textToggle = navTrigger.getAttribute('data-text-toggle'); var textToggle = navTrigger.getAttribute('data-text-toggle');
@ -85,7 +96,7 @@ function initSearch() {
searchResults.classList.remove('active'); searchResults.classList.remove('active');
} }
addEvent(searchInput, 'keydown', function(e){ jtd.addEvent(searchInput, 'keydown', function(e){
switch (e.keyCode) { switch (e.keyCode) {
case 38: // arrow up case 38: // arrow up
e.preventDefault(); e.preventDefault();
@ -129,7 +140,7 @@ function initSearch() {
} }
}); });
addEvent(searchInput, 'keyup', function(e){ jtd.addEvent(searchInput, 'keyup', function(e){
switch (e.keyCode) { switch (e.keyCode) {
case 27: // When esc key is pressed, hide the results and clear the field case 27: // When esc key is pressed, hide the results and clear the field
hideResults(); hideResults();
@ -252,7 +263,7 @@ function initSearch() {
} }
}); });
addEvent(searchInput, 'blur', function(){ jtd.addEvent(searchInput, 'blur', function(){
setTimeout(function(){ hideResults() }, 300); setTimeout(function(){ hideResults() }, 300);
}); });
} }
@ -263,22 +274,16 @@ function pageFocus() {
mainContent.focus(); mainContent.focus();
} }
// Document ready // Document ready
function ready(){ jtd.onReady(function(){
toggleNav(); initNav();
pageFocus(); pageFocus();
if (typeof lunr !== 'undefined') { if (typeof lunr !== 'undefined') {
initSearch(); initSearch();
} }
}
// in case the document is already rendered
if (document.readyState!='loading') ready();
// modern browsers
else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready);
// IE <= 8
else document.attachEvent('onreadystatechange', function(){
if (document.readyState=='complete') ready();
}); });
})(window.jtd = window.jtd || {});
{% include_relative _custom.js %}