selector: '[myInfiniteScroller]'
})
export class InfiniteScrollerDirective implements OnInit, OnDestroy {
- private static PAGE_VIEW_TOP_MARGIN = 500
-
@Input() containerHeight: number
@Input() pageHeight: number
+ @Input() firstLoadedPage = 1
@Input() percentLimit = 70
@Input() autoInit = false
private scrollDownSub: Subscription
private scrollUpSub: Subscription
private pageChangeSub: Subscription
+ private middleScreen: number
constructor () {
this.decimalLimit = this.percentLimit / 100
}
initialize () {
+ this.middleScreen = window.innerHeight / 2
+
// Emit the last value
const throttleOptions = { leading: true, trailing: true }
}
private calculateCurrentPage (current: number) {
- return Math.max(1, Math.round((current + InfiniteScrollerDirective.PAGE_VIEW_TOP_MARGIN) / this.pageHeight))
+ const scrollY = current + this.middleScreen
+
+ const page = Math.max(1, Math.ceil(scrollY / this.pageHeight))
+
+ // Offset page
+ return page + (this.firstLoadedPage - 1)
}
}