Chromium Code Reviews| Index: third_party/polymer/v1_0/components-chromium/paper-toast/paper-toast-extracted.js |
| diff --git a/third_party/polymer/v1_0/components-chromium/paper-toast/paper-toast-extracted.js b/third_party/polymer/v1_0/components-chromium/paper-toast/paper-toast-extracted.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b24b58ae4d1cfc64627fde2c61d414007ec083c0 |
| --- /dev/null |
| +++ b/third_party/polymer/v1_0/components-chromium/paper-toast/paper-toast-extracted.js |
| @@ -0,0 +1,210 @@ |
| +(function() { |
| + 'use strict'; |
| + |
| + // Keeps track of the toast currently opened. |
| + var currentToast = null; |
| + |
| + Polymer({ |
| + is: 'paper-toast', |
| + |
| + behaviors: [ |
| + 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.
|
| + ], |
| + |
| + properties: { |
| + /** |
| + * The element to fit `this` into. |
| + * Overridden from `Polymer.IronFitBehavior`. |
| + */ |
| + fitInto: { |
| + type: Object, |
| + value: window, |
| + observer: '_onFitIntoChanged' |
| + }, |
| + |
| + /** |
| + * The orientation against which to align the dropdown content |
| + * horizontally relative to `positionTarget`. |
| + * Overridden from `Polymer.IronFitBehavior`. |
| + */ |
| + horizontalAlign: { |
| + type: String, |
| + value: 'left' |
| + }, |
| + |
| + /** |
| + * The orientation against which to align the dropdown content |
| + * vertically relative to `positionTarget`. |
| + * Overridden from `Polymer.IronFitBehavior`. |
| + */ |
| + verticalAlign: { |
| + type: String, |
| + value: 'bottom' |
| + }, |
| + |
| + /** |
| + * The duration in milliseconds to show the toast. |
| + * Set to `0`, a negative number, or `Infinity`, to disable the |
| + * toast auto-closing. |
| + */ |
| + duration: { |
| + type: Number, |
| + value: 3000 |
| + }, |
| + |
| + /** |
| + * The text to display in the toast. |
| + */ |
| + text: { |
| + type: String, |
| + value: '' |
| + }, |
| + |
| + /** |
| + * Overridden from `IronOverlayBehavior`. |
| + * Set to false to enable closing of the toast by clicking outside it. |
| + */ |
| + noCancelOnOutsideClick: { |
| + type: Boolean, |
| + value: true |
| + }, |
| + |
| + /** |
| + * Overridden from `IronOverlayBehavior`. |
| + * Set to true to disable auto-focusing the toast or child nodes with |
| + * the `autofocus` attribute` when the overlay is opened. |
| + */ |
| + noAutoFocus: { |
| + type: Boolean, |
| + value: true |
| + } |
| + }, |
| + |
| + listeners: { |
| + 'transitionend': '__onTransitionEnd' |
| + }, |
| + |
| + /** |
| + * Read-only. Deprecated. Use `opened` from `IronOverlayBehavior`. |
| + * @property visible |
| + * @deprecated |
| + */ |
| + get visible() { |
| + Polymer.Base._warn('`visible` is deprecated, use `opened` instead'); |
| + return this.opened; |
| + }, |
| + |
| + /** |
| + * Read-only. Can auto-close if duration is a positive finite number. |
| + * @property _canAutoClose |
| + */ |
| + get _canAutoClose() { |
| + return this.duration > 0 && this.duration !== Infinity; |
| + }, |
| + |
| + created: function() { |
| + this._autoClose = null; |
| + Polymer.IronA11yAnnouncer.requestAvailability(); |
| + }, |
| + |
| + /** |
| + * Show the toast. Without arguments, this is the same as `open()` from `IronOverlayBehavior`. |
| + * @param {(Object|string)=} properties Properties to be set before opening the toast. |
| + * e.g. `toast.show('hello')` or `toast.show({text: 'hello', duration: 3000})` |
| + */ |
| + show: function(properties) { |
| + if (typeof properties == 'string') { |
| + properties = { text: properties }; |
| + } |
| + for (var property in properties) { |
| + if (property.indexOf('_') === 0) { |
| + Polymer.Base._warn('The property "' + property + '" is private and was not set.'); |
| + } else if (property in this) { |
| + this[property] = properties[property]; |
| + } else { |
| + Polymer.Base._warn('The property "' + property + '" is not valid.'); |
| + } |
| + } |
| + this.open(); |
| + }, |
| + |
| + /** |
| + * Hide the toast. Same as `close()` from `IronOverlayBehavior`. |
| + */ |
| + hide: function() { |
| + this.close(); |
| + }, |
| + |
| + /** |
| + * Called on transitions of the toast, indicating a finished animation |
| + * @private |
| + */ |
| + __onTransitionEnd: function(e) { |
| + // there are different transitions that are happening when opening and |
| + // closing the toast. The last one so far is for `opacity`. |
| + // This marks the end of the transition, so we check for this to determine if this |
| + // is the correct event. |
| + if (e && e.target === this && e.propertyName === 'opacity') { |
| + if (this.opened) { |
| + this._finishRenderOpened(); |
| + } else { |
| + this._finishRenderClosed(); |
| + } |
| + } |
| + }, |
| + |
| + /** |
| + * Overridden from `IronOverlayBehavior`. |
| + * Called when the value of `opened` changes. |
| + */ |
| + _openedChanged: function() { |
| + if (this._autoClose !== null) { |
| + this.cancelAsync(this._autoClose); |
| + this._autoClose = null; |
| + } |
| + if (this.opened) { |
| + if (currentToast && currentToast !== this) { |
| + currentToast.close(); |
| + } |
| + currentToast = this; |
| + this.fire('iron-announce', { |
| + text: this.text |
| + }); |
| + if (this._canAutoClose) { |
| + this._autoClose = this.async(this.close, this.duration); |
| + } |
| + } else if (currentToast === this) { |
| + currentToast = null; |
| + } |
| + Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this, arguments); |
| + }, |
| + |
| + /** |
| + * Overridden from `IronOverlayBehavior`. |
| + */ |
| + _renderOpened: function() { |
| + this.classList.add('paper-toast-open'); |
| + }, |
| + |
| + /** |
| + * Overridden from `IronOverlayBehavior`. |
| + */ |
| + _renderClosed: function() { |
| + this.classList.remove('paper-toast-open'); |
| + }, |
| + |
| + /** |
| + * @private |
| + */ |
| + _onFitIntoChanged: function(fitInto) { |
| + this.positionTarget = fitInto; |
| + } |
| + |
| + /** |
| + * Fired when `paper-toast` is opened. |
| + * |
| + * @event 'iron-announce' |
| + * @param {{text: string}} detail Contains text that will be announced. |
| + */ |
| + }); |
| + })(); |