Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: third_party/polymer/v1_0/components-chromium/paper-toast/paper-toast-extracted.js

Issue 2898303004: [MD Bookmarks] Add toasts. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 (function() {
2 'use strict';
3
4 // Keeps track of the toast currently opened.
5 var currentToast = null;
6
7 Polymer({
8 is: 'paper-toast',
9
10 behaviors: [
11 Polymer.IronOverlayBehavior
tsergeant 2017/05/26 05:19:24 Adding a dependency on IronOverlayBehavior is a bi
Dan Beam 2017/05/30 23:25:31 +1, why do we need this?
dpapad 2017/05/30 23:33:39 Would it be too hard to roll our own toast now? In
calamity 2017/05/31 08:10:42 Rolled.
12 ],
13
14 properties: {
15 /**
16 * The element to fit `this` into.
17 * Overridden from `Polymer.IronFitBehavior`.
18 */
19 fitInto: {
20 type: Object,
21 value: window,
22 observer: '_onFitIntoChanged'
23 },
24
25 /**
26 * The orientation against which to align the dropdown content
27 * horizontally relative to `positionTarget`.
28 * Overridden from `Polymer.IronFitBehavior`.
29 */
30 horizontalAlign: {
31 type: String,
32 value: 'left'
33 },
34
35 /**
36 * The orientation against which to align the dropdown content
37 * vertically relative to `positionTarget`.
38 * Overridden from `Polymer.IronFitBehavior`.
39 */
40 verticalAlign: {
41 type: String,
42 value: 'bottom'
43 },
44
45 /**
46 * The duration in milliseconds to show the toast.
47 * Set to `0`, a negative number, or `Infinity`, to disable the
48 * toast auto-closing.
49 */
50 duration: {
51 type: Number,
52 value: 3000
53 },
54
55 /**
56 * The text to display in the toast.
57 */
58 text: {
59 type: String,
60 value: ''
61 },
62
63 /**
64 * Overridden from `IronOverlayBehavior`.
65 * Set to false to enable closing of the toast by clicking outside it.
66 */
67 noCancelOnOutsideClick: {
68 type: Boolean,
69 value: true
70 },
71
72 /**
73 * Overridden from `IronOverlayBehavior`.
74 * Set to true to disable auto-focusing the toast or child nodes with
75 * the `autofocus` attribute` when the overlay is opened.
76 */
77 noAutoFocus: {
78 type: Boolean,
79 value: true
80 }
81 },
82
83 listeners: {
84 'transitionend': '__onTransitionEnd'
85 },
86
87 /**
88 * Read-only. Deprecated. Use `opened` from `IronOverlayBehavior`.
89 * @property visible
90 * @deprecated
91 */
92 get visible() {
93 Polymer.Base._warn('`visible` is deprecated, use `opened` instead');
94 return this.opened;
95 },
96
97 /**
98 * Read-only. Can auto-close if duration is a positive finite number.
99 * @property _canAutoClose
100 */
101 get _canAutoClose() {
102 return this.duration > 0 && this.duration !== Infinity;
103 },
104
105 created: function() {
106 this._autoClose = null;
107 Polymer.IronA11yAnnouncer.requestAvailability();
108 },
109
110 /**
111 * Show the toast. Without arguments, this is the same as `open()` from `IronOverlayBehavior`.
112 * @param {(Object|string)=} properties Properties to be set before open ing the toast.
113 * e.g. `toast.show('hello')` or `toast.show({text: 'hello', duration: 3 000})`
114 */
115 show: function(properties) {
116 if (typeof properties == 'string') {
117 properties = { text: properties };
118 }
119 for (var property in properties) {
120 if (property.indexOf('_') === 0) {
121 Polymer.Base._warn('The property "' + property + '" is private and was not set.');
122 } else if (property in this) {
123 this[property] = properties[property];
124 } else {
125 Polymer.Base._warn('The property "' + property + '" is not valid.' );
126 }
127 }
128 this.open();
129 },
130
131 /**
132 * Hide the toast. Same as `close()` from `IronOverlayBehavior`.
133 */
134 hide: function() {
135 this.close();
136 },
137
138 /**
139 * Called on transitions of the toast, indicating a finished animation
140 * @private
141 */
142 __onTransitionEnd: function(e) {
143 // there are different transitions that are happening when opening and
144 // closing the toast. The last one so far is for `opacity`.
145 // This marks the end of the transition, so we check for this to deter mine if this
146 // is the correct event.
147 if (e && e.target === this && e.propertyName === 'opacity') {
148 if (this.opened) {
149 this._finishRenderOpened();
150 } else {
151 this._finishRenderClosed();
152 }
153 }
154 },
155
156 /**
157 * Overridden from `IronOverlayBehavior`.
158 * Called when the value of `opened` changes.
159 */
160 _openedChanged: function() {
161 if (this._autoClose !== null) {
162 this.cancelAsync(this._autoClose);
163 this._autoClose = null;
164 }
165 if (this.opened) {
166 if (currentToast && currentToast !== this) {
167 currentToast.close();
168 }
169 currentToast = this;
170 this.fire('iron-announce', {
171 text: this.text
172 });
173 if (this._canAutoClose) {
174 this._autoClose = this.async(this.close, this.duration);
175 }
176 } else if (currentToast === this) {
177 currentToast = null;
178 }
179 Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this, arguments);
180 },
181
182 /**
183 * Overridden from `IronOverlayBehavior`.
184 */
185 _renderOpened: function() {
186 this.classList.add('paper-toast-open');
187 },
188
189 /**
190 * Overridden from `IronOverlayBehavior`.
191 */
192 _renderClosed: function() {
193 this.classList.remove('paper-toast-open');
194 },
195
196 /**
197 * @private
198 */
199 _onFitIntoChanged: function(fitInto) {
200 this.positionTarget = fitInto;
201 }
202
203 /**
204 * Fired when `paper-toast` is opened.
205 *
206 * @event 'iron-announce'
207 * @param {{text: string}} detail Contains text that will be announced.
208 */
209 });
210 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698