summaryrefslogtreecommitdiffstats
path: root/client/components/mixins/infiniteScrolling.js
blob: df3b89015dd33b55cfbbbf6b0f6497d218ed1055 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var peakAnticipation = 200;

Mixins.InfiniteScrolling = BlazeComponent.extendComponent({
  onCreated: function() {
    this._nextPeak = Infinity;
  },

  setNextPeak: function(v) {
    this._nextPeak = v;
  },

  getNextPeak: function() {
    return this._nextPeak;
  },

  resetNextPeak: function() {
    this._nextPeak = Infinity;
  },

  // To be overwritten by consumers of this mixin
  reachNextPeak: function() {

  },

  events: function() {
    return [{
      scroll: function(evt) {
        var domElement = evt.currentTarget;
        var altitude = domElement.scrollTop + domElement.offsetHeight;
        altitude += peakAnticipation;
        if (altitude >= this.callFirstWith(null, 'getNextPeak')) {
          this.callFirstWith(null, 'reachNextPeak');
        }
      }
    }];
  }
});