Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: static/js/main.js

Issue 29322846: Issue 2826 - Hamburger menu not visible on all pages (Closed)
Patch Set: Created July 29, 2015, 1:13 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « static/css/main-mobile.css ('k') | templates/default.tmpl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 "use strict"; 1 "use strict";
2 2
3 (function() 3 (function()
4 { 4 {
5 function escapeRegExp(string) 5 function escapeRegExp(string)
6 { 6 {
7 return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); 7 return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
8 } 8 }
9 9
10 function hasClass(element, className) 10 function hasClass(element, className)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 language.onclick = function(event) 58 language.onclick = function(event)
59 { 59 {
60 if (hasClass(languageSelection, "visible")) 60 if (hasClass(languageSelection, "visible"))
61 return; 61 return;
62 62
63 addClass(languageSelection, "visible"); 63 addClass(languageSelection, "visible");
64 stopPropagation(event); 64 stopPropagation(event);
65 }; 65 };
66 } 66 }
67 67
68 function getSelectedItem(menu) 68 function navigationClick(event)
69 { 69 {
70 var items = menu.getElementsByTagName("li"); 70 var element = event.target;
71 for (var i = 0; i < items.length; i++) 71 while (true)
72 { 72 {
73 var item = items[i]; 73 if (!element)
74 if (hasClass(item, "selected")) 74 return false;
75 return item; 75
76 if (hasClass(element, "selected") || element.id == "hamburger")
77 {
78 if ("querySelector" in document)
79 {
80 event.preventDefault();
81 toggleClass(document.querySelector("header nav > ul"), "visible");
82 }
83 return false;
84 }
85 element = element.parentElement;
76 } 86 }
77 } 87 }
78 88
79 function initMenu() 89 function initMenu()
80 { 90 {
81 if ("querySelector" in document) 91 if ("querySelector" in document)
82 { 92 document.querySelector("header nav").onclick = navigationClick;
83 var menu = document.querySelector("header nav>ul");
84 var selectedItem = getSelectedItem(menu);
85 if (selectedItem)
86 selectedItem.onclick = function()
87 {
88 toggleClass(menu, "visible");
89 };
90 }
91 } 93 }
92 94
93 function initFooterSection(section) 95 function initFooterSection(section)
94 { 96 {
95 var header = section.getElementsByTagName("h1")[0]; 97 var header = section.getElementsByTagName("h1")[0];
96 header.onclick = function() 98 header.onclick = function()
97 { 99 {
98 toggleClass(section, "visible"); 100 toggleClass(section, "visible");
99 }; 101 };
100 } 102 }
101 103
102 function initFooter() 104 function initFooter()
103 { 105 {
104 var footerContent = document.getElementById("footer-content"); 106 var footerContent = document.getElementById("footer-content");
105 var footerNav = footerContent.getElementsByTagName("nav")[0]; 107 var footerNav = footerContent.getElementsByTagName("nav")[0];
106 var footerNavSections = footerNav.getElementsByTagName("section"); 108 var footerNavSections = footerNav.getElementsByTagName("section");
107 109
108 for (var i = 0; i < footerNavSections.length; i++) 110 for (var i = 0; i < footerNavSections.length; i++)
109 { 111 {
110 var section = footerNavSections[i]; 112 var section = footerNavSections[i];
111 initFooterSection(section); 113 initFooterSection(section);
112 } 114 }
113 } 115 }
114 116
115 initLanguageSelection(); 117 initLanguageSelection();
116 initMenu(); 118 initMenu();
117 initFooter(); 119 initFooter();
118 })(); 120 })();
OLDNEW
« no previous file with comments | « static/css/main-mobile.css ('k') | templates/default.tmpl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld