Skip to content

Commit d189bfe

Browse files
author
ardentia
committed
improve scrolled to bottom
1 parent 1c85921 commit d189bfe

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

projects/ng-sq-common/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sq-ui/ng-sq-common",
3-
"version": "2.0.2",
3+
"version": "2.0.3",
44
"license": "MIT",
55
"private": false,
66
"description": "The core module for SQ-UI kit for Angular",

projects/ng-sq-common/src/lib/directives/scrolled-to-bottom-listener.directive.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
Directive, ElementRef, EventEmitter, Output, Renderer2, OnDestroy
2+
Directive, ElementRef, EventEmitter, Output, Renderer2, OnDestroy, NgZone, ChangeDetectorRef
33
} from '@angular/core';
44

55
@Directive({
@@ -10,18 +10,21 @@ export class ScrolledToBottomListenerDirective implements OnDestroy {
1010

1111
private listener;
1212

13-
constructor(private elementRef: ElementRef, private renderer: Renderer2) {
14-
this.listener = this.renderer.listen(this.elementRef.nativeElement, 'scroll', () => {
15-
this.checkIfHasScrolledToBottom(this.elementRef.nativeElement);
13+
constructor(private elementRef: ElementRef, private renderer: Renderer2, private ngZone: NgZone, private cd: ChangeDetectorRef) {
14+
this.ngZone.runOutsideAngular(() => {
15+
this.listener = this.renderer.listen(this.elementRef.nativeElement, 'scroll', () => {
16+
this.checkIfHasScrolledToBottom(this.elementRef.nativeElement);
17+
});
1618
});
1719
}
1820

1921
checkIfHasScrolledToBottom(element: HTMLElement) {
2022
const hasScrolledToBottom = element.scrollTop > 0 ?
21-
(Math.ceil(element.scrollHeight - element.scrollTop) <= element.clientHeight) : false;
23+
(Math.ceil(element.scrollHeight - element.scrollTop) <= Math.ceil(element.clientHeight + 3)) : false;
2224

2325
if (hasScrolledToBottom) {
2426
this.scrolledToBottom.emit();
27+
this.cd.detectChanges();
2528
}
2629
}
2730

0 commit comments

Comments
 (0)