Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: chrome/browser/resources/options/options_page.js

Issue 5024004: dom-ui settings: prefer to add/remove class 'hidden' rather than manipulate t... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('options', function() { 5 cr.define('options', function() {
6 ///////////////////////////////////////////////////////////////////////////// 6 /////////////////////////////////////////////////////////////////////////////
7 // OptionsPage class: 7 // OptionsPage class:
8 8
9 /** 9 /**
10 * Base class for options page. 10 * Base class for options page.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 /** 102 /**
103 * Closes any currently-open subpage. 103 * Closes any currently-open subpage.
104 */ 104 */
105 OptionsPage.closeSubPage = function() { 105 OptionsPage.closeSubPage = function() {
106 for (var name in OptionsPage.registeredSubPages_) { 106 for (var name in OptionsPage.registeredSubPages_) {
107 var pageInfo = OptionsPage.registeredSubPages_[name]; 107 var pageInfo = OptionsPage.registeredSubPages_[name];
108 if (pageInfo.page.visible) { 108 if (pageInfo.page.visible) {
109 pageInfo.page.visible = false; 109 pageInfo.page.visible = false;
110 // Since the managed pref banner lives outside the overlay, and the 110 // Since the managed pref banner lives outside the overlay, and the
111 // parent is not changing visibility, update the banner explicitly. 111 // parent is not changing visibility, update the banner explicitly.
112 var banner = $('managed-prefs-banner'); 112 pageInfo.parentPage.updateManagedBannerVisibility();
113 banner.style.display = pageInfo.parentPage.managed ? 'block' : 'none';
114 } 113 }
115 } 114 }
116 }; 115 };
117 116
118 /** 117 /**
119 * Shows the tab contents for the given navigation tab. 118 * Shows the tab contents for the given navigation tab.
120 * @param {!Element} tab The tab that the user clicked. 119 * @param {!Element} tab The tab that the user clicked.
121 */ 120 */
122 OptionsPage.showTab = function(tab) { 121 OptionsPage.showTab = function(tab) {
123 // Search parents until we find a tab, or the nav bar itself. This allows 122 // Search parents until we find a tab, or the nav bar itself. This allows
124 // tabs to have child nodes, e.g. labels in separately-styled spans. 123 // tabs to have child nodes, e.g. labels in separately-styled spans.
125 while (tab && !tab.classList.contains('subpages-nav-tabs') && 124 while (tab && !tab.classList.contains('subpages-nav-tabs') &&
126 !tab.classList.contains('inactive-tab')) { 125 !tab.classList.contains('inactive-tab')) {
127 tab = tab.parentNode; 126 tab = tab.parentNode;
128 } 127 }
129 if (!tab || !tab.classList.contains('inactive-tab')) 128 if (!tab || !tab.classList.contains('inactive-tab'))
130 return; 129 return;
131 130
132 if (this.activeNavTab != null) { 131 if (this.activeNavTab != null) {
133 this.activeNavTab.classList.remove('active-tab'); 132 this.activeNavTab.classList.remove('active-tab');
134 $(this.activeNavTab.getAttribute('tab-contents')).classList. 133 $(this.activeNavTab.getAttribute('tab-contents')).classList.
135 remove('active-tab-contents'); 134 remove('active-tab-contents');
136 } 135 }
137 136
138 tab.classList.add('active-tab'); 137 tab.classList.add('active-tab');
139 $(tab.getAttribute('tab-contents')).classList.add('active-tab-contents'); 138 $(tab.getAttribute('tab-contents')).classList.add('active-tab-contents');
140 this.activeNavTab = tab; 139 this.activeNavTab = tab;
141 } 140 };
142 141
143 /** 142 /**
144 * Registers new options page. 143 * Registers new options page.
145 * @param {OptionsPage} page Page to register. 144 * @param {OptionsPage} page Page to register.
146 */ 145 */
147 OptionsPage.register = function(page) { 146 OptionsPage.register = function(page) {
148 OptionsPage.registeredPages_[page.name] = page; 147 OptionsPage.registeredPages_[page.name] = page;
149 // Create and add new page <li> element to navbar. 148 // Create and add new page <li> element to navbar.
150 var pageNav = document.createElement('li'); 149 var pageNav = document.createElement('li');
151 pageNav.id = page.name + 'PageNav'; 150 pageNav.id = page.name + 'PageNav';
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 * Initializes page content. 224 * Initializes page content.
226 */ 225 */
227 initializePage: function() {}, 226 initializePage: function() {},
228 227
229 /** 228 /**
230 * Sets managed banner visibility state. 229 * Sets managed banner visibility state.
231 */ 230 */
232 setManagedBannerVisibility: function(visible) { 231 setManagedBannerVisibility: function(visible) {
233 this.managed = visible; 232 this.managed = visible;
234 if (this.visible) { 233 if (this.visible) {
235 $('managed-prefs-banner').style.display = visible ? 'block' : 'none'; 234 this.updateManagedBannerVisibility();
235 }
236 },
237
238 /**
239 * Updates managed banner visibility state.
240 */
241 updateManagedBannerVisibility: function() {
242 if (this.managed) {
243 $('managed-prefs-banner').classList.remove('hidden');
244 } else {
245 $('managed-prefs-banner').classList.add('hidden');
236 } 246 }
237 }, 247 },
238 248
239 /** 249 /**
240 * Gets page visibility state. 250 * Gets page visibility state.
241 */ 251 */
242 get visible() { 252 get visible() {
243 var page = $(this.pageDivName); 253 var page = $(this.pageDivName);
244 return page && page.ownerDocument.defaultView.getComputedStyle( 254 return page && page.ownerDocument.defaultView.getComputedStyle(
245 page).display == 'block'; 255 page).display == 'block';
246 }, 256 },
247 257
248 /** 258 /**
249 * Sets page visibility. 259 * Sets page visibility.
250 */ 260 */
251 set visible(visible) { 261 set visible(visible) {
252 if ((this.visible && visible) || (!this.visible && !visible)) 262 if ((this.visible && visible) || (!this.visible && !visible))
253 return; 263 return;
254 264
255 if (visible) { 265 if (visible) {
256 this.pageDiv.style.display = 'block'; 266 this.pageDiv.classList.remove('hidden');
257 if (this.isOverlay) { 267 if (this.isOverlay) {
258 var overlay = $('overlay'); 268 $('overlay').classList.remove('hidden');
259 overlay.classList.remove('hidden');
260 document.addEventListener('keydown', 269 document.addEventListener('keydown',
261 OptionsPage.clearOverlaysOnEsc_); 270 OptionsPage.clearOverlaysOnEsc_);
262 } else { 271 } else {
263 if (this.isSubPageSheet) 272 if (this.isSubPageSheet)
264 $('subpage-sheet-container').classList.remove('hidden'); 273 $('subpage-sheet-container').classList.remove('hidden');
265 274
266 var banner = $('managed-prefs-banner'); 275 this.updateManagedBannerVisibility();
267 banner.style.display = this.managed ? 'block' : 'none';
268 276
269 // Recent webkit change no longer allows url change from "chrome://". 277 // Recent webkit change no longer allows url change from "chrome://".
270 window.history.pushState({pageName: this.name}, 278 window.history.pushState({pageName: this.name}, this.title);
271 this.title);
272 } 279 }
273 if (this.tab) { 280 if (this.tab) {
274 this.tab.classList.add('navbar-item-selected'); 281 this.tab.classList.add('navbar-item-selected');
275 } 282 }
276 } else { 283 } else {
284 this.pageDiv.classList.add('hidden');
277 if (this.isOverlay) { 285 if (this.isOverlay) {
278 var overlay = $('overlay'); 286 $('overlay').classList.add('hidden');
279 overlay.classList.add('hidden');
280 document.removeEventListener('keydown', 287 document.removeEventListener('keydown',
281 OptionsPage.clearOverlaysOnEsc_); 288 OptionsPage.clearOverlaysOnEsc_);
282 } else if (this.isSubPageSheet) { 289 } else if (this.isSubPageSheet) {
283 $('subpage-sheet-container').classList.add('hidden'); 290 $('subpage-sheet-container').classList.add('hidden');
284 } 291 }
285 this.pageDiv.style.display = 'none';
286 if (this.tab) { 292 if (this.tab) {
287 this.tab.classList.remove('navbar-item-selected'); 293 this.tab.classList.remove('navbar-item-selected');
288 } 294 }
289 } 295 }
290 296
291 cr.dispatchPropertyChange(this, 'visible', visible, !visible); 297 cr.dispatchPropertyChange(this, 'visible', visible, !visible);
292 }, 298 },
293 299
294 /** 300 /**
295 * Handles a hash value in the URL (such as bar in 301 * Handles a hash value in the URL (such as bar in
296 * chrome://options/foo#bar). Called on page load. By default, this shows 302 * chrome://options/foo#bar). Called on page load. By default, this shows
297 * an overlay that matches the hash name, but can be overriden by individual 303 * an overlay that matches the hash name, but can be overriden by individual
298 * OptionsPage subclasses to get other behavior. 304 * OptionsPage subclasses to get other behavior.
299 * @param {string} hash The hash value. 305 * @param {string} hash The hash value.
300 */ 306 */
301 handleHash: function(hash) { 307 handleHash: function(hash) {
302 OptionsPage.showOverlay(hash); 308 OptionsPage.showOverlay(hash);
303 }, 309 },
304 }; 310 };
305 311
306 // Export 312 // Export
307 return { 313 return {
308 OptionsPage: OptionsPage 314 OptionsPage: OptionsPage
309 }; 315 };
310 316
311 }); 317 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698