77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
---
|
|
---
|
|
|
|
/*!
|
|
* Basically Basic Jekyll Theme 1.4.1
|
|
* Copyright 2017-2018 Michael Rose - mademistakes | @mmistakes
|
|
* Free for personal and commercial use under the MIT license
|
|
* https://github.com/mmistakes/jekyll-theme-basically-basic/blob/master/LICENSE
|
|
*/
|
|
|
|
var menuItems = document.querySelectorAll('#sidebar li');
|
|
|
|
// Get vendor transition property
|
|
var docElemStyle = document.documentElement.style;
|
|
var transitionProp = typeof docElemStyle.transition == 'string' ?
|
|
'transition' : 'WebkitTransition';
|
|
|
|
// Animate sidebar menu items
|
|
function animateMenuItems() {
|
|
for (var i = 0; i < menuItems.length; i++) {
|
|
var item = menuItems[i];
|
|
// Stagger transition with transitionDelay
|
|
item.style[transitionProp + 'Delay'] = (i * 75) + 'ms';
|
|
item.classList.toggle('is--moved');
|
|
}
|
|
};
|
|
|
|
var myWrapper = document.querySelector('.wrapper');
|
|
var myMenu = document.querySelector('.sidebar');
|
|
var myToggle = document.querySelector('.toggle');
|
|
var myInitialContent = document.querySelector('.initial-content');
|
|
var mySearchContent = document.querySelector('.search-content');
|
|
var mySearchToggle = document.querySelector('.search-toggle');
|
|
|
|
// Toggle sidebar visibility
|
|
function toggleClassMenu() {
|
|
myMenu.classList.add('is--animatable');
|
|
if (!myMenu.classList.contains('is--visible')) {
|
|
myMenu.classList.add('is--visible');
|
|
myToggle.classList.add('open');
|
|
myWrapper.classList.add('is--pushed');
|
|
} else {
|
|
myMenu.classList.remove('is--visible');
|
|
myToggle.classList.remove('open');
|
|
myWrapper.classList.remove('is--pushed');
|
|
}
|
|
}
|
|
|
|
// Animation smoother
|
|
function OnTransitionEnd() {
|
|
myMenu.classList.remove('is--animatable');
|
|
}
|
|
|
|
myMenu.addEventListener('transitionend', OnTransitionEnd, false);
|
|
myToggle.addEventListener('click', function () {
|
|
toggleClassMenu();
|
|
animateMenuItems();
|
|
}, false);
|
|
myMenu.addEventListener('click', function () {
|
|
toggleClassMenu();
|
|
animateMenuItems();
|
|
}, false);
|
|
if (mySearchToggle) {
|
|
mySearchToggle.addEventListener('click', function () {
|
|
toggleClassSearch();
|
|
}, false);
|
|
}
|
|
|
|
// Toggle search input and content visibility
|
|
function toggleClassSearch() {
|
|
mySearchContent.classList.toggle('is--visible');
|
|
myInitialContent.classList.toggle('is--hidden');
|
|
setTimeout(function () {
|
|
document.querySelector('.search-content input').focus();
|
|
}, 400);
|
|
}
|