OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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('print_preview', function() { | 5 cr.define('print_preview', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * Toggles visibility of the specified printing options sections. | 9 * Toggles visibility of the specified printing options sections. |
10 * @param {!print_preview.DestinationStore} destinationStore To listen for | 10 * @param {!print_preview.DestinationStore} destinationStore To listen for |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 * Updates the component appearance according to the current state. | 105 * Updates the component appearance according to the current state. |
106 * @param {boolean} noAnimation Whether section visibility transitions | 106 * @param {boolean} noAnimation Whether section visibility transitions |
107 * should not be animated. | 107 * should not be animated. |
108 * @private | 108 * @private |
109 */ | 109 */ |
110 updateState_: function(noAnimation) { | 110 updateState_: function(noAnimation) { |
111 if (!this.firstDestinationReady_) { | 111 if (!this.firstDestinationReady_) { |
112 fadeOutElement(this.getElement(), noAnimation); | 112 fadeOutElement(this.getElement(), noAnimation); |
113 return; | 113 return; |
114 } | 114 } |
| 115 // When capabilities are not known yet, don't change the state to avoid |
| 116 // unnecessary fade in/out cycles. |
| 117 if (!this.capabilitiesReady_) |
| 118 return; |
115 | 119 |
116 var all = this.settingsToShow_ == MoreSettings.SettingsToShow.ALL; | 120 var all = this.settingsToShow_ == MoreSettings.SettingsToShow.ALL; |
117 this.getChildElement('.more-settings-label').textContent = | 121 this.getChildElement('.more-settings-label').textContent = |
118 loadTimeData.getString(all ? 'lessOptionsLabel' : 'moreOptionsLabel'); | 122 loadTimeData.getString(all ? 'lessOptionsLabel' : 'moreOptionsLabel'); |
119 var iconEl = this.getChildElement('.more-settings-icon'); | 123 var iconEl = this.getChildElement('.more-settings-icon'); |
120 iconEl.classList.toggle('more-settings-icon-plus', !all); | 124 iconEl.classList.toggle('more-settings-icon-plus', !all); |
121 iconEl.classList.toggle('more-settings-icon-minus', all); | 125 iconEl.classList.toggle('more-settings-icon-minus', all); |
122 | 126 |
123 var availableSections = this.settingsSections_.reduce( | 127 var availableSections = this.settingsSections_.reduce( |
124 function(count, section) { | 128 function(count, section) { |
125 return count + (section.isAvailable() ? 1 : 0); | 129 return count + (section.isAvailable() ? 1 : 0); |
126 }, 0); | 130 }, 0); |
127 | 131 |
128 // Magic 6 is chosen as the number of sections when it still feels like | 132 // Magic 6 is chosen as the number of sections when it still feels like |
129 // manageable and not too crowded. Also, when capabilities are not know | 133 // manageable and not too crowded. |
130 // yet, ignore this limit to avoid unnecessary fade in/out cycles. | |
131 var hasSectionsToToggle = | 134 var hasSectionsToToggle = |
132 (availableSections > 6 || !this.capabilitiesReady_) && | 135 availableSections > 6 && |
133 this.settingsSections_.some(function(section) { | 136 this.settingsSections_.some(function(section) { |
134 return section.hasCollapsibleContent(); | 137 return section.hasCollapsibleContent(); |
135 }); | 138 }); |
136 | 139 |
137 if (hasSectionsToToggle) | 140 if (hasSectionsToToggle) |
138 fadeInElement(this.getElement(), noAnimation); | 141 fadeInElement(this.getElement(), noAnimation); |
139 else | 142 else |
140 fadeOutElement(this.getElement(), noAnimation); | 143 fadeOutElement(this.getElement(), noAnimation); |
141 | 144 |
142 var collapseContent = | 145 var collapseContent = |
143 this.settingsToShow_ == MoreSettings.SettingsToShow.MOST_POPULAR && | 146 this.settingsToShow_ == MoreSettings.SettingsToShow.MOST_POPULAR && |
144 hasSectionsToToggle; | 147 hasSectionsToToggle; |
145 this.settingsSections_.forEach(function(section) { | 148 this.settingsSections_.forEach(function(section) { |
146 section.setCollapseContent(collapseContent, noAnimation); | 149 section.setCollapseContent(collapseContent, noAnimation); |
147 }); | 150 }); |
148 } | 151 } |
149 }; | 152 }; |
150 | 153 |
151 // Export | 154 // Export |
152 return { | 155 return { |
153 MoreSettings: MoreSettings | 156 MoreSettings: MoreSettings |
154 }; | 157 }; |
155 }); | 158 }); |
OLD | NEW |