BookmarkManager: Fix 'new folder text field size changes on clicking it' issue.
[chromium-blink-merge.git] / chrome / browser / resources / media_router / elements / issue_banner / issue_banner.js
blob7466340118ba2f844b64c66a9bf091f13b01b7ea
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This Polymer element is used to show information about issues related
6 // to casting.
7 Polymer({
8   is: 'issue-banner',
10   properties: {
11     /**
12      * The issue to show.
13      * @type {?media_router.Issue}
14      */
15     issue: {
16       type: Object,
17       value: null,
18       observer: 'updateActionButtonText_',
19     },
21     /**
22      * Maps an issue action type to the resource identifier of the text shown
23      * in the action button.
24      * This is a property of issue-banner because it is used in tests.
25      * @type {!Array<string>}
26      */
27     issueActionTypeToButtonTextResource_: {
28       type: Array,
29       value: function() {
30         return ['dismissButton', 'learnMoreButton'];
31       },
32     },
34     /**
35      * The text shown in the default action button.
36      * @private {string}
37      */
38     defaultActionButtonText_: {
39       type: String,
40       value: '',
41     },
43     /**
44      * The text shown in the secondary action button.
45      * @private {string}
46      */
47     secondaryActionButtonText_: {
48       type: String,
49       value: '',
50     },
51   },
53   /**
54    * @param {?media_router.Issue} issue
55    * @return {boolean} Whether or not to hide the blocking issue UI.
56    * @private
57    */
58   computeIsBlockingIssueHidden_: function(issue) {
59     return !issue || !issue.isBlocking;
60   },
62   /**
63    * Returns true to hide the non-blocking issue UI, false to show it.
64    *
65    * @param {?media_router.Issue} issue
66    * @private
67    */
68   computeIsNonBlockingIssueHidden_: function(issue) {
69     return !issue || issue.isBlocking;
70   },
72   /**
73    * @param {?media_router.Issue} issue The current issue.
74    * @return {string} The class for the overall issue-banner.
75    * @private
76    */
77   computeIssueClass_: function(issue) {
78     if (!issue)
79       return '';
81     return issue.isBlocking ? 'blocking' : 'non-blocking';
82   },
84   /**
85    * @param {?media_router.Issue} issue
86    * @return {boolean} Whether or not to hide the non-blocking issue UI.
87    * @private
88    */
89   computeOptionalActionHidden_: function(issue) {
90     return !issue || !issue.secondaryActionType;
91   },
93   /**
94    * Fires an issue-action-click event.
95    *
96    * @param {number} actionType The type of issue action.
97    * @private
98    */
99   fireIssueActionClick_: function(actionType) {
100     this.fire('issue-action-click', {
101       id: this.issue.id,
102       actionType: actionType,
103       helpPageId: this.issue.helpPageId
104     });
105   },
107   /**
108    * Called when a default issue action is clicked.
109    *
110    * @param {!Event} event The event object.
111    * @private
112    */
113   onClickDefaultAction_: function(event) {
114     this.fireIssueActionClick_(this.issue.defaultActionType);
115   },
117   /**
118    * Called when an optional issue action is clicked.
119    *
120    * @param {!Event} event The event object.
121    * @private
122    */
123   onClickOptAction_: function(event) {
124     this.fireIssueActionClick_(this.issue.secondaryActionType);
125   },
127   /**
128    * Called when |issue| is updated. This updates the default and secondary
129    * action button text.
130    *
131    * @private
132    */
133   updateActionButtonText_: function() {
134     var defaultText = '';
135     var secondaryText = '';
136     if (this.issue) {
137       defaultText = loadTimeData.getString(
138           this.issueActionTypeToButtonTextResource_[
139           this.issue.defaultActionType]);
141       if (this.issue.secondaryActionType) {
142         secondaryText = loadTimeData.getString(
143             this.issueActionTypeToButtonTextResource_[
144             this.issue.secondaryActionType]);
145       }
146     }
148     this.defaultActionButtonText_ = defaultText;
149     this.secondaryActionButtonText_ = secondaryText;
150   },