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 * Modal dialog for print destination's advanced settings. | 9 * Modal dialog for print destination's advanced settings. |
10 * @param {!print_preview.PrintTicketStore} printTicketStore Contains the | 10 * @param {!print_preview.PrintTicketStore} printTicketStore Contains the |
(...skipping 21 matching lines...) Expand all Loading... |
32 localStrings.getString('advancedSettingsSearchBoxPlaceholder')); | 32 localStrings.getString('advancedSettingsSearchBoxPlaceholder')); |
33 this.addChild(this.searchBox_); | 33 this.addChild(this.searchBox_); |
34 | 34 |
35 /** @private {print_preview.Destination} */ | 35 /** @private {print_preview.Destination} */ |
36 this.destination_ = null; | 36 this.destination_ = null; |
37 | 37 |
38 /** @private {!Array.<!print_preview.AdvancedSettingsItem>} */ | 38 /** @private {!Array.<!print_preview.AdvancedSettingsItem>} */ |
39 this.items_ = []; | 39 this.items_ = []; |
40 }; | 40 }; |
41 | 41 |
| 42 /** |
| 43 * CSS classes used by the component. |
| 44 * @enum {string} |
| 45 * @private |
| 46 */ |
| 47 AdvancedSettings.Classes_ = { |
| 48 EXTRA_PADDING: 'advanced-settings-item-extra-padding' |
| 49 }; |
| 50 |
42 AdvancedSettings.prototype = { | 51 AdvancedSettings.prototype = { |
43 __proto__: print_preview.Overlay.prototype, | 52 __proto__: print_preview.Overlay.prototype, |
44 | 53 |
45 /** | 54 /** |
46 * @param {!print_preview.Destination} destination Destination to show | 55 * @param {!print_preview.Destination} destination Destination to show |
47 * advanced settings for. | 56 * advanced settings for. |
48 */ | 57 */ |
49 showForDestination: function(destination) { | 58 showForDestination: function(destination) { |
50 assert(!this.destination_); | 59 assert(!this.destination_); |
51 this.destination_ = destination; | 60 this.destination_ = destination; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 this.getChildElement('.settings-area').offsetTop - | 128 this.getChildElement('.settings-area').offsetTop - |
120 this.getChildElement('.action-area').offsetHeight; | 129 this.getChildElement('.action-area').offsetHeight; |
121 }, | 130 }, |
122 | 131 |
123 /** | 132 /** |
124 * Filters displayed settings with the given query. | 133 * Filters displayed settings with the given query. |
125 * @param {?string} query Query to filter settings by. | 134 * @param {?string} query Query to filter settings by. |
126 * @private | 135 * @private |
127 */ | 136 */ |
128 filterLists_: function(query) { | 137 filterLists_: function(query) { |
| 138 var atLeastOneMatch = false; |
129 var lastVisibleItemWithBubble = null; | 139 var lastVisibleItemWithBubble = null; |
130 this.items_.forEach(function(item) { | 140 this.items_.forEach(function(item) { |
131 item.updateSearchQuery(query); | 141 item.updateSearchQuery(query); |
| 142 if (getIsVisible(item.getElement())) |
| 143 atLeastOneMatch = true; |
132 if (item.searchBubbleShown) | 144 if (item.searchBubbleShown) |
133 lastVisibleItemWithBubble = item; | 145 lastVisibleItemWithBubble = item; |
134 }); | 146 }); |
135 setIsVisible( | 147 setIsVisible( |
136 this.getChildElement('.advanced-settings-item-extra-padding'), | 148 this.getChildElement('.no-settings-match-hint'), !atLeastOneMatch); |
| 149 setIsVisible( |
| 150 this.getChildElement('.' + AdvancedSettings.Classes_.EXTRA_PADDING), |
137 !!lastVisibleItemWithBubble); | 151 !!lastVisibleItemWithBubble); |
138 }, | 152 }, |
139 | 153 |
140 /** | 154 /** |
141 * Resets the filter query. | 155 * Resets the filter query. |
142 * @private | 156 * @private |
143 */ | 157 */ |
144 resetSearch_: function() { | 158 resetSearch_: function() { |
145 this.searchBox_.setQuery(null); | 159 this.searchBox_.setQuery(null); |
146 this.filterLists_(null); | 160 this.filterLists_(null); |
147 }, | 161 }, |
148 | 162 |
149 /** | 163 /** |
150 * Renders all of the available settings. | 164 * Renders all of the available settings. |
151 * @private | 165 * @private |
152 */ | 166 */ |
153 renderSettings_: function() { | 167 renderSettings_: function() { |
154 // Remove all children settings elements. | 168 // Remove all children settings elements. |
155 this.items_.forEach(function(item) { | 169 this.items_.forEach(function(item) { |
156 this.removeChild(item); | 170 this.removeChild(item); |
157 }.bind(this)); | 171 }.bind(this)); |
158 this.items_ = []; | 172 this.items_ = []; |
159 | 173 |
| 174 var extraPadding = |
| 175 this.getChildElement('.' + AdvancedSettings.Classes_.EXTRA_PADDING); |
| 176 if (extraPadding) |
| 177 extraPadding.parentNode.removeChild(extraPadding); |
| 178 |
160 var vendorCapabilities = this.printTicketStore_.vendorItems.capability; | 179 var vendorCapabilities = this.printTicketStore_.vendorItems.capability; |
161 if (!vendorCapabilities) | 180 if (!vendorCapabilities) |
162 return; | 181 return; |
163 | 182 |
164 var availableHeight = this.getAvailableContentHeight_(); | 183 var availableHeight = this.getAvailableContentHeight_(); |
165 var containerEl = this.getChildElement('.settings-area'); | 184 var containerEl = this.getChildElement('.settings-area'); |
166 containerEl.style.maxHeight = availableHeight + 'px'; | 185 containerEl.style.maxHeight = availableHeight + 'px'; |
167 var settingsEl = this.getChildElement('.settings'); | 186 var settingsEl = this.getChildElement('.settings'); |
168 | 187 |
169 vendorCapabilities.forEach(function(capability) { | 188 vendorCapabilities.forEach(function(capability) { |
170 var item = new print_preview.AdvancedSettingsItem( | 189 var item = new print_preview.AdvancedSettingsItem( |
171 this.eventTarget_, this.printTicketStore_, capability); | 190 this.eventTarget_, this.printTicketStore_, capability); |
172 this.addChild(item); | 191 this.addChild(item); |
173 item.render(settingsEl); | 192 item.render(settingsEl); |
174 this.items_.push(item); | 193 this.items_.push(item); |
175 }.bind(this)); | 194 }.bind(this)); |
176 | 195 |
177 var extraPadding = document.createElement('div'); | 196 extraPadding = document.createElement('div'); |
178 extraPadding.classList.add('advanced-settings-item-extra-padding'); | 197 extraPadding.classList.add(AdvancedSettings.Classes_.EXTRA_PADDING); |
179 extraPadding.hidden = true; | 198 extraPadding.hidden = true; |
180 settingsEl.appendChild(extraPadding); | 199 settingsEl.appendChild(extraPadding); |
181 }, | 200 }, |
182 | 201 |
183 /** | 202 /** |
184 * Called when settings search query changes. Filters displayed settings | 203 * Called when settings search query changes. Filters displayed settings |
185 * with the given query. | 204 * with the given query. |
186 * @param {Event} evt Contains search query. | 205 * @param {Event} evt Contains search query. |
187 * @private | 206 * @private |
188 */ | 207 */ |
(...skipping 16 matching lines...) Expand all Loading... |
205 | 224 |
206 this.printTicketStore_.vendorItems.updateValue(values); | 225 this.printTicketStore_.vendorItems.updateValue(values); |
207 } | 226 } |
208 }; | 227 }; |
209 | 228 |
210 // Export | 229 // Export |
211 return { | 230 return { |
212 AdvancedSettings: AdvancedSettings | 231 AdvancedSettings: AdvancedSettings |
213 }; | 232 }; |
214 }); | 233 }); |
OLD | NEW |