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

Side by Side Diff: third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js

Issue 2386533002: MD History: update iron-list and dependencies for better scroll performance (Closed)
Patch Set: test "fixes" Created 4 years, 2 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
1 /** 1 /**
2 * `Polymer.IronScrollTargetBehavior` allows an element to respond to scroll e vents from a 2 * `Polymer.IronScrollTargetBehavior` allows an element to respond to scroll e vents from a
3 * designated scroll target. 3 * designated scroll target.
4 * 4 *
5 * Elements that consume this behavior can override the `_scrollHandler` 5 * Elements that consume this behavior can override the `_scrollHandler`
6 * method to add logic on the scroll event. 6 * method to add logic on the scroll event.
7 * 7 *
8 * @demo demo/scrolling-region.html Scrolling Region 8 * @demo demo/scrolling-region.html Scrolling Region
9 * @demo demo/document.html Document Element 9 * @demo demo/document.html Document Element
10 * @polymerBehavior 10 * @polymerBehavior
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 value: function() { 52 value: function() {
53 return this._defaultScrollTarget; 53 return this._defaultScrollTarget;
54 } 54 }
55 } 55 }
56 }, 56 },
57 57
58 observers: [ 58 observers: [
59 '_scrollTargetChanged(scrollTarget, isAttached)' 59 '_scrollTargetChanged(scrollTarget, isAttached)'
60 ], 60 ],
61 61
62 /**
63 * True if the event listener should be installed.
64 */
65 _shouldHaveListener: true,
66
62 _scrollTargetChanged: function(scrollTarget, isAttached) { 67 _scrollTargetChanged: function(scrollTarget, isAttached) {
63 var eventTarget; 68 var eventTarget;
64 69
65 if (this._oldScrollTarget) { 70 if (this._oldScrollTarget) {
66 eventTarget = this._oldScrollTarget === this._doc ? window : this._oldSc rollTarget; 71 this._toggleScrollListener(false, this._oldScrollTarget);
67 eventTarget.removeEventListener('scroll', this._boundScrollHandler);
68 this._oldScrollTarget = null; 72 this._oldScrollTarget = null;
69 } 73 }
70
71 if (!isAttached) { 74 if (!isAttached) {
72 return; 75 return;
73 } 76 }
74 // Support element id references 77 // Support element id references
75 if (scrollTarget === 'document') { 78 if (scrollTarget === 'document') {
76 79
77 this.scrollTarget = this._doc; 80 this.scrollTarget = this._doc;
78 81
79 } else if (typeof scrollTarget === 'string') { 82 } else if (typeof scrollTarget === 'string') {
80 83
81 this.scrollTarget = this.domHost ? this.domHost.$[scrollTarget] : 84 this.scrollTarget = this.domHost ? this.domHost.$[scrollTarget] :
82 Polymer.dom(this.ownerDocument).querySelector('#' + scrollTarget); 85 Polymer.dom(this.ownerDocument).querySelector('#' + scrollTarget);
83 86
84 } else if (this._isValidScrollTarget()) { 87 } else if (this._isValidScrollTarget()) {
85 88
86 eventTarget = scrollTarget === this._doc ? window : scrollTarget;
87 this._boundScrollHandler = this._boundScrollHandler || this._scrollHandl er.bind(this); 89 this._boundScrollHandler = this._boundScrollHandler || this._scrollHandl er.bind(this);
88 this._oldScrollTarget = scrollTarget; 90 this._oldScrollTarget = scrollTarget;
91 this._toggleScrollListener(this._shouldHaveListener, scrollTarget);
89 92
90 eventTarget.addEventListener('scroll', this._boundScrollHandler);
91 } 93 }
92 }, 94 },
93 95
94 /** 96 /**
95 * Runs on every scroll event. Consumer of this behavior may override this m ethod. 97 * Runs on every scroll event. Consumer of this behavior may override this m ethod.
96 * 98 *
97 * @protected 99 * @protected
98 */ 100 */
99 _scrollHandler: function scrollHandler() {}, 101 _scrollHandler: function scrollHandler() {},
100 102
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 return 0; 209 return 0;
208 }, 210 },
209 211
210 /** 212 /**
211 * Returns true if the scroll target is a valid HTMLElement. 213 * Returns true if the scroll target is a valid HTMLElement.
212 * 214 *
213 * @return {boolean} 215 * @return {boolean}
214 */ 216 */
215 _isValidScrollTarget: function() { 217 _isValidScrollTarget: function() {
216 return this.scrollTarget instanceof HTMLElement; 218 return this.scrollTarget instanceof HTMLElement;
219 },
220
221 _toggleScrollListener: function(yes, scrollTarget) {
222 if (!this._boundScrollHandler) {
223 return;
224 }
225 var eventTarget = scrollTarget === this._doc ? window : scrollTarget;
226
227 if (yes) {
228 eventTarget.addEventListener('scroll', this._boundScrollHandler);
229 } else {
230 eventTarget.removeEventListener('scroll', this._boundScrollHandler);
231 }
232 },
233
234 /**
235 * Enables or disables the scroll event listener.
236 *
237 * @param {boolean} yes True to add the event, False to remove it.
238 */
239 toggleScrollListener: function(yes) {
240 this._shouldHaveListener = yes;
241 this._toggleScrollListener(yes, this.scrollTarget);
217 } 242 }
243
218 }; 244 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698