pico.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * Pico's Default Theme - JavaScript helper
  3. *
  4. * Pico is a stupidly simple, blazing fast, flat file CMS.
  5. *
  6. * @author Daniel Rudolf
  7. * @link http://picocms.org
  8. * @license http://opensource.org/licenses/MIT The MIT License
  9. * @version 1.1
  10. */
  11. function main()
  12. {
  13. // capability CSS classes
  14. document.documentElement.className = 'js';
  15. // wrap tables
  16. var tables = document.querySelectorAll('#main > .container > table');
  17. for (var i = 0; i < tables.length; i++) {
  18. if (!/\btable-responsive\b/.test(tables[i].parentElement.className)) {
  19. var tableWrapper = document.createElement('div');
  20. tableWrapper.className = 'table-responsive';
  21. tables[i].parentElement.insertBefore(tableWrapper, tables[i]);
  22. tableWrapper.appendChild(tables[i]);
  23. }
  24. }
  25. // responsive menu
  26. var menu = document.getElementById('nav'),
  27. menuToggle = document.getElementById('nav-toggle'),
  28. toggleMenuEvent = function (event) {
  29. if (event.type === 'keydown') {
  30. if ((event.keyCode != 13) && (event.keyCode != 32)) {
  31. return;
  32. }
  33. }
  34. event.preventDefault();
  35. if (menuToggle.getAttribute('aria-expanded') === 'false') {
  36. menuToggle.setAttribute('aria-expanded', 'true');
  37. utils.slideDown(menu, null, function () {
  38. if (event.type === 'keydown') {
  39. menu.focus();
  40. }
  41. });
  42. } else {
  43. menuToggle.setAttribute('aria-expanded', 'false');
  44. utils.slideUp(menu);
  45. }
  46. },
  47. onResizeEvent = function () {
  48. if (utils.isElementVisible(menuToggle)) {
  49. menu.className = 'hidden';
  50. menuToggle.addEventListener('click', toggleMenuEvent);
  51. menuToggle.addEventListener('keydown', toggleMenuEvent);
  52. } else {
  53. menu.className = '';
  54. menu.removeAttribute('data-slide-id');
  55. menuToggle.removeEventListener('click', toggleMenuEvent);
  56. menuToggle.removeEventListener('keydown', toggleMenuEvent);
  57. }
  58. };
  59. window.addEventListener('resize', onResizeEvent);
  60. onResizeEvent();
  61. }
  62. main();