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 /** | 5 /** |
6 * @fileoverview User pod row implementation. | 6 * @fileoverview User pod row implementation. |
7 */ | 7 */ |
8 | 8 |
9 cr.define('login', function() { | 9 cr.define('login', function() { |
10 /** | 10 /** |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 {id: 'locked', class: 'custom-icon-locked'}, | 193 {id: 'locked', class: 'custom-icon-locked'}, |
194 {id: 'unlocked', class: 'custom-icon-unlocked'}, | 194 {id: 'unlocked', class: 'custom-icon-unlocked'}, |
195 {id: 'hardlocked', class: 'custom-icon-hardlocked'}, | 195 {id: 'hardlocked', class: 'custom-icon-hardlocked'}, |
196 {id: 'spinner', class: 'custom-icon-spinner'} | 196 {id: 'spinner', class: 'custom-icon-spinner'} |
197 ]; | 197 ]; |
198 | 198 |
199 UserPodCustomIcon.prototype = { | 199 UserPodCustomIcon.prototype = { |
200 __proto__: HTMLDivElement.prototype, | 200 __proto__: HTMLDivElement.prototype, |
201 | 201 |
202 /** | 202 /** |
| 203 * The id of the icon being shown. |
| 204 * @type {string} |
| 205 * @private |
| 206 */ |
| 207 iconId_: '', |
| 208 |
| 209 /** |
203 * Tooltip to be shown when the user hovers over the icon. The icon | 210 * Tooltip to be shown when the user hovers over the icon. The icon |
204 * properties may be set so the tooltip is shown automatically when the icon | 211 * properties may be set so the tooltip is shown automatically when the icon |
205 * is updated. The tooltip is shown in a bubble attached to the icon | 212 * is updated. The tooltip is shown in a bubble attached to the icon |
206 * element. | 213 * element. |
207 * @type {string} | 214 * @type {string} |
208 * @private | 215 * @private |
209 */ | 216 */ |
210 tooltip_: '', | 217 tooltip_: '', |
211 | 218 |
212 /** | 219 /** |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 return this.querySelector('.custom-icon'); | 286 return this.querySelector('.custom-icon'); |
280 }, | 287 }, |
281 | 288 |
282 /** | 289 /** |
283 * Updates the icon element class list to properly represent the provided | 290 * Updates the icon element class list to properly represent the provided |
284 * icon. | 291 * icon. |
285 * @param {!string} id The id of the icon that should be shown. Should be | 292 * @param {!string} id The id of the icon that should be shown. Should be |
286 * one of the ids listed in {@code UserPodCustomIcon.ICONS}. | 293 * one of the ids listed in {@code UserPodCustomIcon.ICONS}. |
287 */ | 294 */ |
288 setIcon: function(id) { | 295 setIcon: function(id) { |
| 296 this.iconId_ = id; |
289 UserPodCustomIcon.ICONS.forEach(function(icon) { | 297 UserPodCustomIcon.ICONS.forEach(function(icon) { |
290 this.iconElement.classList.toggle(icon.class, id == icon.id); | 298 this.iconElement.classList.toggle(icon.class, id == icon.id); |
291 }, this); | 299 }, this); |
292 }, | 300 }, |
293 | 301 |
294 /** | 302 /** |
295 * Sets the ARIA label for the icon. | 303 * Sets the ARIA label for the icon. |
296 * @param {!string} ariaLabel | 304 * @param {!string} ariaLabel |
297 */ | 305 */ |
298 setAriaLabel: function(ariaLabel) { | 306 setAriaLabel: function(ariaLabel) { |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 | 478 |
471 // If autoshown bubble got hidden, clear the autoshown flag. | 479 // If autoshown bubble got hidden, clear the autoshown flag. |
472 if ($('bubble').hidden && this.tooltipAutoshown_) | 480 if ($('bubble').hidden && this.tooltipAutoshown_) |
473 this.tooltipAutoshown_ = false; | 481 this.tooltipAutoshown_ = false; |
474 | 482 |
475 // Show the tooltip bubble. | 483 // Show the tooltip bubble. |
476 var bubbleContent = document.createElement('div'); | 484 var bubbleContent = document.createElement('div'); |
477 bubbleContent.textContent = this.tooltip_; | 485 bubbleContent.textContent = this.tooltip_; |
478 | 486 |
479 /** @const */ var BUBBLE_OFFSET = CUSTOM_ICON_CONTAINER_SIZE / 2; | 487 /** @const */ var BUBBLE_OFFSET = CUSTOM_ICON_CONTAINER_SIZE / 2; |
480 /** @const */ var BUBBLE_PADDING = 8; | 488 // TODO(tengs): Introduce a special reauth state for the account picker, |
| 489 // instead of showing the tooltip bubble here (crbug.com/409427). |
| 490 /** @const */ var BUBBLE_PADDING = 8 + (this.iconId_ ? 0 : 23); |
481 $('bubble').showContentForElement(this, | 491 $('bubble').showContentForElement(this, |
482 cr.ui.Bubble.Attachment.RIGHT, | 492 cr.ui.Bubble.Attachment.RIGHT, |
483 bubbleContent, | 493 bubbleContent, |
484 BUBBLE_OFFSET, | 494 BUBBLE_OFFSET, |
485 BUBBLE_PADDING); | 495 BUBBLE_PADDING); |
486 this.ensureTooltipTimeoutCleared_(); | 496 this.ensureTooltipTimeoutCleared_(); |
487 this.tooltipActive_ = true; | 497 this.tooltipActive_ = true; |
488 }, | 498 }, |
489 | 499 |
490 /** | 500 /** |
(...skipping 1767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2258 * The icon parameters. | 2268 * The icon parameters. |
2259 */ | 2269 */ |
2260 showUserPodCustomIcon: function(username, icon) { | 2270 showUserPodCustomIcon: function(username, icon) { |
2261 var pod = this.getPodWithUsername_(username); | 2271 var pod = this.getPodWithUsername_(username); |
2262 if (pod == null) { | 2272 if (pod == null) { |
2263 console.error('Unable to show user pod button for ' + username + | 2273 console.error('Unable to show user pod button for ' + username + |
2264 ': user pod not found.'); | 2274 ': user pod not found.'); |
2265 return; | 2275 return; |
2266 } | 2276 } |
2267 | 2277 |
2268 if (!icon.id) | 2278 if (!icon.id && !icon.tooltip) |
2269 return; | 2279 return; |
2270 | 2280 |
2271 pod.customIconElement.setIcon(icon.id); | 2281 if (icon.id) |
| 2282 pod.customIconElement.setIcon(icon.id); |
2272 | 2283 |
2273 if (icon.hardlockOnClick) { | 2284 if (icon.hardlockOnClick) { |
2274 pod.customIconElement.setInteractive( | 2285 pod.customIconElement.setInteractive( |
2275 this.hardlockUserPod_.bind(this, username)); | 2286 this.hardlockUserPod_.bind(this, username)); |
2276 } else { | 2287 } else { |
2277 pod.customIconElement.setInteractive(null); | 2288 pod.customIconElement.setInteractive(null); |
2278 } | 2289 } |
2279 | 2290 |
2280 var ariaLabel = icon.ariaLabel || (icon.tooltip && icon.tooltip.text); | 2291 var ariaLabel = icon.ariaLabel || (icon.tooltip && icon.tooltip.text); |
2281 if (ariaLabel) | 2292 if (ariaLabel) |
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2959 if (pod && pod.multiProfilesPolicyApplied) { | 2970 if (pod && pod.multiProfilesPolicyApplied) { |
2960 pod.userTypeBubbleElement.classList.remove('bubble-shown'); | 2971 pod.userTypeBubbleElement.classList.remove('bubble-shown'); |
2961 } | 2972 } |
2962 } | 2973 } |
2963 }; | 2974 }; |
2964 | 2975 |
2965 return { | 2976 return { |
2966 PodRow: PodRow | 2977 PodRow: PodRow |
2967 }; | 2978 }; |
2968 }); | 2979 }); |
OLD | NEW |