You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
pico/themes/default/js/pico.js

67 lines
2.3 KiB

/**
* Pico's Default Theme - JavaScript helper
*
* Pico is a stupidly simple, blazing fast, flat file CMS.
*
* @author Daniel Rudolf
* @link http://picocms.org
* @license http://opensource.org/licenses/MIT The MIT License
* @version 1.1
*/
function main() {
// capability CSS classes
document.documentElement.classList.remove('no-js');
document.documentElement.classList.add('js');
// wrap tables
utils.forEach(document.querySelectorAll('main table'), function (_, table) {
if (!table.parentElement.classList.contains('table-responsive')) {
var tableWrapper = document.createElement('div');
tableWrapper.classList.add('table-responsive');
table.parentElement.insertBefore(tableWrapper, table);
tableWrapper.appendChild(table);
}
});
// responsive menu
var menu = document.getElementById('page-menu'),
menuToggle = document.getElementById('page-menu-toggle'),
toggleMenuEvent = function (event) {
if (event.type === 'keydown') {
if ((event.keyCode != 13) && (event.keyCode != 32)) {
return;
}
}
event.preventDefault();
if (menuToggle.getAttribute('aria-expanded') === 'false') {
menuToggle.setAttribute('aria-expanded', 'true');
utils.slideDown(menu, null, function () {
if (event.type === 'keydown') menu.focus();
});
} else {
menuToggle.setAttribute('aria-expanded', 'false');
utils.slideUp(menu);
}
},
onResizeEvent = function () {
if (utils.isElementVisible(menuToggle)) {
menu.classList.add('hidden');
menuToggle.addEventListener('click', toggleMenuEvent);
menuToggle.addEventListener('keydown', toggleMenuEvent);
} else {
menuToggle.removeEventListener('keydown', toggleMenuEvent);
menuToggle.removeEventListener('click', toggleMenuEvent);
menu.classList.remove('hidden', 'slide', 'up');
delete menu.dataset.slideId;
}
};
window.addEventListener('resize', onResizeEvent);
onResizeEvent();
}
main();