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.

responsive.js 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // generic layout specific responsive stuff goes here
  2. function openFlyout() {
  3. $('html').addClass('flyout-is-active');
  4. $('#wrapper2').on('click', function(e){
  5. e.preventDefault();
  6. e.stopPropagation();
  7. closeFlyout();
  8. });
  9. }
  10. function closeFlyout() {
  11. $('html').removeClass('flyout-is-active');
  12. $('#wrapper2').off('click');
  13. }
  14. function isMobile() {
  15. return $('.js-flyout-menu-toggle-button').is(":visible");
  16. }
  17. function setupFlyout() {
  18. var mobileInit = false,
  19. desktopInit = false;
  20. /* click handler for mobile menu toggle */
  21. $('.js-flyout-menu-toggle-button').on('click', function(e) {
  22. e.preventDefault();
  23. e.stopPropagation();
  24. if($('html').hasClass('flyout-is-active')) {
  25. closeFlyout();
  26. } else {
  27. openFlyout();
  28. }
  29. });
  30. /* bind resize handler */
  31. $(window).resize(function() {
  32. initMenu();
  33. })
  34. /* menu init function for dom detaching and appending on mobile / desktop view */
  35. function initMenu() {
  36. var _initMobileMenu = function() {
  37. /* only init mobile menu, if it hasn't been done yet */
  38. if(!mobileInit) {
  39. $('#main-menu > ul').detach().appendTo('.js-project-menu');
  40. $('#top-menu > ul').detach().appendTo('.js-general-menu');
  41. $('#sidebar > *').detach().appendTo('.js-sidebar');
  42. $('#account > ul').detach().appendTo('.js-profile-menu');
  43. mobileInit = true;
  44. desktopInit = false;
  45. }
  46. }
  47. var _initDesktopMenu = function() {
  48. if(!desktopInit) {
  49. $('.js-project-menu > ul').detach().appendTo('#main-menu');
  50. $('.js-general-menu > ul').detach().appendTo('#top-menu');
  51. $('.js-sidebar > *').detach().appendTo('#sidebar');
  52. $('.js-profile-menu > ul').detach().appendTo('#account');
  53. desktopInit = true;
  54. mobileInit = false;
  55. }
  56. }
  57. if(isMobile()) {
  58. _initMobileMenu();
  59. } else {
  60. _initDesktopMenu();
  61. }
  62. }
  63. // init menu on page load
  64. initMenu();
  65. }
  66. $(document).ready(setupFlyout);