@ts-core/angular 13.1.30 → 13.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/directive/ScrollCheckDirective.d.ts +12 -3
- package/esm2020/directive/ScrollCheckDirective.mjs +62 -17
- package/fesm2015/ts-core-angular.mjs +61 -16
- package/fesm2015/ts-core-angular.mjs.map +1 -1
- package/fesm2020/ts-core-angular.mjs +61 -16
- package/fesm2020/ts-core-angular.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -2,14 +2,23 @@ import { ElementRef, EventEmitter } from '@angular/core';
|
|
|
2
2
|
import { DestroyableContainer } from '@ts-core/common';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class ScrollCheckDirective extends DestroyableContainer {
|
|
5
|
+
top: EventEmitter<boolean>;
|
|
6
|
+
bottom: EventEmitter<boolean>;
|
|
5
7
|
limitExceed: EventEmitter<boolean>;
|
|
6
8
|
private _scrollLimit;
|
|
7
|
-
private
|
|
9
|
+
private element;
|
|
10
|
+
private isTop;
|
|
11
|
+
private isBottom;
|
|
8
12
|
private isExceedLimit;
|
|
13
|
+
delay: number;
|
|
14
|
+
offset: number;
|
|
9
15
|
constructor(element: ElementRef);
|
|
10
|
-
protected check()
|
|
16
|
+
protected check: () => void;
|
|
17
|
+
protected get scrollValue(): number;
|
|
18
|
+
protected get scrollHeight(): number;
|
|
19
|
+
protected get clientHeight(): number;
|
|
11
20
|
set scrollLimit(value: number);
|
|
12
21
|
get scrollLimit(): number;
|
|
13
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScrollCheckDirective, never>;
|
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "scrollLimit": "vi-scroll-check"; }, { "limitExceed": "limitExceed"; }, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "delay": "delay"; "offset": "offset"; "scrollLimit": "vi-scroll-check"; }, { "top": "top"; "bottom": "bottom"; "limitExceed": "limitExceed"; }, never>;
|
|
15
24
|
}
|
|
@@ -17,27 +17,64 @@ export class ScrollCheckDirective extends DestroyableContainer {
|
|
|
17
17
|
// Properties
|
|
18
18
|
//
|
|
19
19
|
//--------------------------------------------------------------------------
|
|
20
|
+
this.top = new EventEmitter();
|
|
21
|
+
this.bottom = new EventEmitter();
|
|
20
22
|
this.limitExceed = new EventEmitter();
|
|
23
|
+
this.isTop = false;
|
|
24
|
+
this.isBottom = false;
|
|
21
25
|
this.isExceedLimit = false;
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
this.delay = DateUtil.MILLISECONDS_SECOND / 10;
|
|
27
|
+
this.offset = 50;
|
|
28
|
+
//--------------------------------------------------------------------------
|
|
29
|
+
//
|
|
30
|
+
// Protected Methods
|
|
31
|
+
//
|
|
32
|
+
//--------------------------------------------------------------------------
|
|
33
|
+
this.check = () => {
|
|
34
|
+
let value = this.scrollValue >= this.scrollLimit;
|
|
35
|
+
if (value !== this.isExceedLimit) {
|
|
36
|
+
this.isExceedLimit = value;
|
|
37
|
+
this.limitExceed.emit(value);
|
|
38
|
+
}
|
|
39
|
+
value = this.scrollValue + this.clientHeight + this.offset > this.scrollHeight;
|
|
40
|
+
this.bottom.next(value);
|
|
41
|
+
/*
|
|
42
|
+
if (value !== this.isBottom) {
|
|
43
|
+
this.isBottom = value;
|
|
44
|
+
this.bottom.next(value);
|
|
45
|
+
}
|
|
46
|
+
*/
|
|
47
|
+
value = this.scrollValue < this.offset;
|
|
48
|
+
this.top.next(value);
|
|
49
|
+
/*
|
|
50
|
+
if (value !== this.isTop) {
|
|
51
|
+
this.isTop = value;
|
|
52
|
+
this.top.next(value);
|
|
53
|
+
}
|
|
54
|
+
*/
|
|
55
|
+
};
|
|
56
|
+
this.delay = DateUtil.MILLISECONDS_SECOND / 10;
|
|
57
|
+
this.element = element.nativeElement;
|
|
58
|
+
fromEvent(this.element, 'scroll').pipe(debounceTime(this.delay), takeUntil(this.destroyed)).subscribe(this.check);
|
|
29
59
|
}
|
|
30
60
|
//--------------------------------------------------------------------------
|
|
31
61
|
//
|
|
32
|
-
//
|
|
62
|
+
// Private Properties
|
|
33
63
|
//
|
|
34
64
|
//--------------------------------------------------------------------------
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
65
|
+
// --------------------------------------------------------------------------
|
|
66
|
+
//
|
|
67
|
+
// Private Properties
|
|
68
|
+
//
|
|
69
|
+
// --------------------------------------------------------------------------
|
|
70
|
+
get scrollValue() {
|
|
71
|
+
return this.element.scrollTop;
|
|
72
|
+
}
|
|
73
|
+
get scrollHeight() {
|
|
74
|
+
return this.element.scrollHeight;
|
|
75
|
+
}
|
|
76
|
+
get clientHeight() {
|
|
77
|
+
return this.element.clientHeight;
|
|
41
78
|
}
|
|
42
79
|
//--------------------------------------------------------------------------
|
|
43
80
|
//
|
|
@@ -56,16 +93,24 @@ export class ScrollCheckDirective extends DestroyableContainer {
|
|
|
56
93
|
}
|
|
57
94
|
}
|
|
58
95
|
ScrollCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ScrollCheckDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
59
|
-
ScrollCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ScrollCheckDirective, selector: "[vi-scroll-check]", inputs: { scrollLimit: ["vi-scroll-check", "scrollLimit"] }, outputs: { limitExceed: "limitExceed" }, usesInheritance: true, ngImport: i0 });
|
|
96
|
+
ScrollCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ScrollCheckDirective, selector: "[vi-scroll-check]", inputs: { delay: "delay", offset: "offset", scrollLimit: ["vi-scroll-check", "scrollLimit"] }, outputs: { top: "top", bottom: "bottom", limitExceed: "limitExceed" }, usesInheritance: true, ngImport: i0 });
|
|
60
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ScrollCheckDirective, decorators: [{
|
|
61
98
|
type: Directive,
|
|
62
99
|
args: [{
|
|
63
100
|
selector: '[vi-scroll-check]'
|
|
64
101
|
}]
|
|
65
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: {
|
|
102
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { top: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], bottom: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}], limitExceed: [{
|
|
66
107
|
type: Output
|
|
108
|
+
}], delay: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], offset: [{
|
|
111
|
+
type: Input
|
|
67
112
|
}], scrollLimit: [{
|
|
68
113
|
type: Input,
|
|
69
114
|
args: ['vi-scroll-check']
|
|
70
115
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nyb2xsQ2hlY2tEaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlL1Njcm9sbENoZWNrRGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUEwQjFELDRFQUE0RTtJQUM1RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw0RUFBNEU7SUFFNUUsWUFBWSxPQUFtQjtRQUMzQixLQUFLLEVBQUUsQ0FBQztRQWhDWiw0RUFBNEU7UUFDNUUsRUFBRTtRQUNGLGFBQWE7UUFDYixFQUFFO1FBQ0YsNEVBQTRFO1FBR3JFLFFBQUcsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxXQUFNLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkQsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUt2RCxVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFHaEMsVUFBSyxHQUFXLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFbEQsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQWdCM0IsNEVBQTRFO1FBQzVFLEVBQUU7UUFDRixvQkFBb0I7UUFDcEIsRUFBRTtRQUNGLDRFQUE0RTtRQUVsRSxVQUFLLEdBQUcsR0FBUyxFQUFFO1lBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNqRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEM7WUFFRCxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4Qjs7Ozs7Y0FLRTtZQUVGLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckI7Ozs7O2NBS0U7UUFDTixDQUFDLENBQUM7UUFyQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUVyQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBbUNELDRFQUE0RTtJQUM1RSxFQUFFO0lBQ0YscUJBQXFCO0lBQ3JCLEVBQUU7SUFDRiw0RUFBNEU7SUFFNUUsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxJQUFjLFdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBYyxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDckMsQ0FBQztJQUNELElBQWMsWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3JDLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLG9CQUFvQjtJQUNwQixFQUFFO0lBQ0YsNEVBQTRFO0lBRTVFLElBQ1csV0FBVyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUNELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQzs7a0hBL0dRLG9CQUFvQjtzR0FBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7aUdBU1UsR0FBRztzQkFEVCxNQUFNO2dCQUdBLE1BQU07c0JBRFosTUFBTTtnQkFHQSxXQUFXO3NCQURqQixNQUFNO2dCQVdBLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBK0VLLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQ29udGFpbmVyIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IERhdGVVdGlsIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdmktc2Nyb2xsLWNoZWNrXSdcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsQ2hlY2tEaXJlY3RpdmUgZXh0ZW5kcyBEZXN0cm95YWJsZUNvbnRhaW5lciB7XG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0b3A6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYm90dG9tOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGxpbWl0RXhjZWVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIF9zY3JvbGxMaW1pdDogbnVtYmVyO1xuXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGlzVG9wOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0JvdHRvbTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFeGNlZWRMaW1pdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVsYXk6IG51bWJlciA9IERhdGVVdGlsLk1JTExJU0VDT05EU19TRUNPTkQgLyAxMDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvZmZzZXQ6IG51bWJlciA9IDUwO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENvbnN0cnVjdG9yXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGVsYXkgPSBEYXRlVXRpbC5NSUxMSVNFQ09ORFNfU0VDT05EIC8gMTA7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCAnc2Nyb2xsJykucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWxheSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSh0aGlzLmNoZWNrKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJvdGVjdGVkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBjaGVjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5zY3JvbGxWYWx1ZSA+PSB0aGlzLnNjcm9sbExpbWl0O1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaXNFeGNlZWRMaW1pdCkge1xuICAgICAgICAgICAgdGhpcy5pc0V4Y2VlZExpbWl0ID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmxpbWl0RXhjZWVkLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSB0aGlzLnNjcm9sbFZhbHVlICsgdGhpcy5jbGllbnRIZWlnaHQgKyB0aGlzLm9mZnNldCA+IHRoaXMuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB0aGlzLmJvdHRvbS5uZXh0KHZhbHVlKTtcblxuICAgICAgICAvKlxuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaXNCb3R0b20pIHtcbiAgICAgICAgICAgIHRoaXMuaXNCb3R0b20gPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tLm5leHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgICovXG5cbiAgICAgICAgdmFsdWUgPSB0aGlzLnNjcm9sbFZhbHVlIDwgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMudG9wLm5leHQodmFsdWUpO1xuICAgICAgICAvKlxuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaXNUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuaXNUb3AgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMudG9wLm5leHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgfTtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJpdmF0ZSBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGdldCBzY3JvbGxWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LnNjcm9sbFRvcDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldCBzY3JvbGxIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0IGNsaWVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIEBJbnB1dCgndmktc2Nyb2xsLWNoZWNrJylcbiAgICBwdWJsaWMgc2V0IHNjcm9sbExpbWl0KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IHRoaXMuX3Njcm9sbExpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2Nyb2xsTGltaXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGVjaygpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHNjcm9sbExpbWl0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxMaW1pdDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -2951,27 +2951,64 @@ class ScrollCheckDirective extends DestroyableContainer {
|
|
|
2951
2951
|
// Properties
|
|
2952
2952
|
//
|
|
2953
2953
|
//--------------------------------------------------------------------------
|
|
2954
|
+
this.top = new EventEmitter();
|
|
2955
|
+
this.bottom = new EventEmitter();
|
|
2954
2956
|
this.limitExceed = new EventEmitter();
|
|
2957
|
+
this.isTop = false;
|
|
2958
|
+
this.isBottom = false;
|
|
2955
2959
|
this.isExceedLimit = false;
|
|
2956
|
-
this.
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2960
|
+
this.delay = DateUtil.MILLISECONDS_SECOND / 10;
|
|
2961
|
+
this.offset = 50;
|
|
2962
|
+
//--------------------------------------------------------------------------
|
|
2963
|
+
//
|
|
2964
|
+
// Protected Methods
|
|
2965
|
+
//
|
|
2966
|
+
//--------------------------------------------------------------------------
|
|
2967
|
+
this.check = () => {
|
|
2968
|
+
let value = this.scrollValue >= this.scrollLimit;
|
|
2969
|
+
if (value !== this.isExceedLimit) {
|
|
2970
|
+
this.isExceedLimit = value;
|
|
2971
|
+
this.limitExceed.emit(value);
|
|
2972
|
+
}
|
|
2973
|
+
value = this.scrollValue + this.clientHeight + this.offset > this.scrollHeight;
|
|
2974
|
+
this.bottom.next(value);
|
|
2975
|
+
/*
|
|
2976
|
+
if (value !== this.isBottom) {
|
|
2977
|
+
this.isBottom = value;
|
|
2978
|
+
this.bottom.next(value);
|
|
2979
|
+
}
|
|
2980
|
+
*/
|
|
2981
|
+
value = this.scrollValue < this.offset;
|
|
2982
|
+
this.top.next(value);
|
|
2983
|
+
/*
|
|
2984
|
+
if (value !== this.isTop) {
|
|
2985
|
+
this.isTop = value;
|
|
2986
|
+
this.top.next(value);
|
|
2987
|
+
}
|
|
2988
|
+
*/
|
|
2989
|
+
};
|
|
2990
|
+
this.delay = DateUtil.MILLISECONDS_SECOND / 10;
|
|
2991
|
+
this.element = element.nativeElement;
|
|
2992
|
+
fromEvent(this.element, 'scroll').pipe(debounceTime(this.delay), takeUntil(this.destroyed)).subscribe(this.check);
|
|
2963
2993
|
}
|
|
2964
2994
|
//--------------------------------------------------------------------------
|
|
2965
2995
|
//
|
|
2966
|
-
//
|
|
2996
|
+
// Private Properties
|
|
2967
2997
|
//
|
|
2968
2998
|
//--------------------------------------------------------------------------
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2999
|
+
// --------------------------------------------------------------------------
|
|
3000
|
+
//
|
|
3001
|
+
// Private Properties
|
|
3002
|
+
//
|
|
3003
|
+
// --------------------------------------------------------------------------
|
|
3004
|
+
get scrollValue() {
|
|
3005
|
+
return this.element.scrollTop;
|
|
3006
|
+
}
|
|
3007
|
+
get scrollHeight() {
|
|
3008
|
+
return this.element.scrollHeight;
|
|
3009
|
+
}
|
|
3010
|
+
get clientHeight() {
|
|
3011
|
+
return this.element.clientHeight;
|
|
2975
3012
|
}
|
|
2976
3013
|
//--------------------------------------------------------------------------
|
|
2977
3014
|
//
|
|
@@ -2990,14 +3027,22 @@ class ScrollCheckDirective extends DestroyableContainer {
|
|
|
2990
3027
|
}
|
|
2991
3028
|
}
|
|
2992
3029
|
ScrollCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ScrollCheckDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2993
|
-
ScrollCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ScrollCheckDirective, selector: "[vi-scroll-check]", inputs: { scrollLimit: ["vi-scroll-check", "scrollLimit"] }, outputs: { limitExceed: "limitExceed" }, usesInheritance: true, ngImport: i0 });
|
|
3030
|
+
ScrollCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ScrollCheckDirective, selector: "[vi-scroll-check]", inputs: { delay: "delay", offset: "offset", scrollLimit: ["vi-scroll-check", "scrollLimit"] }, outputs: { top: "top", bottom: "bottom", limitExceed: "limitExceed" }, usesInheritance: true, ngImport: i0 });
|
|
2994
3031
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ScrollCheckDirective, decorators: [{
|
|
2995
3032
|
type: Directive,
|
|
2996
3033
|
args: [{
|
|
2997
3034
|
selector: '[vi-scroll-check]'
|
|
2998
3035
|
}]
|
|
2999
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: {
|
|
3036
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { top: [{
|
|
3000
3037
|
type: Output
|
|
3038
|
+
}], bottom: [{
|
|
3039
|
+
type: Output
|
|
3040
|
+
}], limitExceed: [{
|
|
3041
|
+
type: Output
|
|
3042
|
+
}], delay: [{
|
|
3043
|
+
type: Input
|
|
3044
|
+
}], offset: [{
|
|
3045
|
+
type: Input
|
|
3001
3046
|
}], scrollLimit: [{
|
|
3002
3047
|
type: Input,
|
|
3003
3048
|
args: ['vi-scroll-check']
|