Chromium Code Reviews| Index: chrome/browser/resources/settings/settings_main/settings_main.js |
| diff --git a/chrome/browser/resources/settings/settings_main/settings_main.js b/chrome/browser/resources/settings/settings_main/settings_main.js |
| index f80a8512c0c54b21bc89b73ddfbf8271534494f2..2c5dcacb5615222af84a1e7072eb73a3ee98c69f 100644 |
| --- a/chrome/browser/resources/settings/settings_main/settings_main.js |
| +++ b/chrome/browser/resources/settings/settings_main/settings_main.js |
| @@ -34,7 +34,12 @@ Polymer({ |
| value: false, |
| }, |
| - /** @private */ |
| + /** |
| + * True if a section is expanded to show a subpage. Initialized using |
| + * currentRoute. Toggles based on expand/collapse events so effects can |
| + * be deferred until transitions complete. |
| + * @private |
| + */ |
| inSubpage_: Boolean, |
| /** |
| @@ -89,6 +94,8 @@ Polymer({ |
| function() { |
| this.resolver_.resolve(); |
| }.bind(this)); |
| + |
| + this.inSubpage_ = this.currentRoute.subpage.length > 0; |
|
Dan Beam
2016/07/23 01:13:44
so we don't need to call updatePagesShown_() here?
|
| }, |
| /** |
| @@ -114,16 +121,36 @@ Polymer({ |
| * @private |
| */ |
| currentRouteChanged_: function(newRoute) { |
| - this.inSubpage_ = newRoute.subpage.length > 0; |
| - this.style.height = this.inSubpage_ ? '100%' : ''; |
| + this.updatePagesShown_(); |
| + }, |
| - if (newRoute.page == 'about') { |
| - this.showPages_ = {about: true, basic: false, advanced: false}; |
| + /** @private */ |
| + subpageExpanded_: function() { |
| + this.inSubpage_ = true; |
| + // Hide pages other than the current section's parent page. |
| + this.updatePagesShown_(); |
| + }, |
| + |
| + /** @private */ |
| + subpageCollapsing_: function() { |
| + this.inSubpage_ = false; |
| + // Unhide pages before collapsing the full-height section. |
| + this.updatePagesShown_(); |
| + }, |
| + |
| + /** |
| + * Updates the hidden state of the about, basic and advanced pages, based on |
| + * the current route and the Advanced toggle state. |
| + * @private |
| + */ |
| + updatePagesShown_: function() { |
| + if (this.currentRoute.page == 'about') { |
| + this.showPages_ = {about: true, advanced: false, basic: false}; |
| } else { |
| this.showPages_ = { |
| about: false, |
| - basic: newRoute.page == 'basic' || !this.inSubpage_, |
| - advanced: newRoute.page == 'advanced' || |
| + basic: this.currentRoute.page == 'basic' || !this.inSubpage_, |
| + advanced: this.currentRoute.page == 'advanced' || |
| (!this.inSubpage_ && this.advancedToggleExpanded_), |
| }; |