OLD | NEW |
(Empty) | |
| 1 |
| 2 |
| 3 (function() { |
| 4 |
| 5 Polymer({ |
| 6 |
| 7 is: 'paper-dialog-scrollable', |
| 8 |
| 9 properties: { |
| 10 |
| 11 /** |
| 12 * The dialog element that implements `Polymer.PaperDialogBehavior` contai
ning this element. |
| 13 */ |
| 14 dialogElement: { |
| 15 type: Object, |
| 16 value: function() { |
| 17 return this.parentNode; |
| 18 } |
| 19 } |
| 20 |
| 21 }, |
| 22 |
| 23 listeners: { |
| 24 'scrollable.scroll': '_onScroll', |
| 25 'iron-resize': '_onIronResize' |
| 26 }, |
| 27 |
| 28 /** |
| 29 * Returns the scrolling element. |
| 30 */ |
| 31 get scrollTarget() { |
| 32 return this.$.scrollable; |
| 33 }, |
| 34 |
| 35 attached: function() { |
| 36 this.classList.add('no-padding'); |
| 37 // Set itself to the overlay sizing target |
| 38 this.dialogElement.sizingTarget = this.scrollTarget; |
| 39 // If the host is sized, fit the scrollable area to the container. Otherwi
se let it be |
| 40 // its natural size. |
| 41 requestAnimationFrame(function() { |
| 42 if (this.offsetHeight > 0) { |
| 43 this.$.scrollable.classList.add('fit'); |
| 44 } |
| 45 this._scroll(); |
| 46 }.bind(this)); |
| 47 }, |
| 48 |
| 49 _scroll: function() { |
| 50 this.toggleClass('is-scrolled', this.scrollTarget.scrollTop > 0); |
| 51 this.toggleClass('can-scroll', this.scrollTarget.offsetHeight < this.scrol
lTarget.scrollHeight); |
| 52 this.toggleClass('scrolled-to-bottom', |
| 53 this.scrollTarget.scrollTop + this.scrollTarget.offsetHeight >= this.scr
ollTarget.scrollHeight); |
| 54 }, |
| 55 |
| 56 _onScroll: function() { |
| 57 this._scroll(); |
| 58 } |
| 59 |
| 60 }) |
| 61 |
| 62 })(); |
| 63 |
OLD | NEW |