@ts-core/angular 13.1.30 → 13.1.31
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 +11 -3
- package/esm2020/directive/ScrollCheckDirective.mjs +52 -17
- package/fesm2015/ts-core-angular.mjs +51 -16
- package/fesm2015/ts-core-angular.mjs.map +1 -1
- package/fesm2020/ts-core-angular.mjs +51 -16
- package/fesm2020/ts-core-angular.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -2,14 +2,22 @@ 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
|
+
offset: number;
|
|
9
14
|
constructor(element: ElementRef);
|
|
10
|
-
protected check()
|
|
15
|
+
protected check: () => void;
|
|
16
|
+
protected get scrollValue(): number;
|
|
17
|
+
protected get scrollHeight(): number;
|
|
18
|
+
protected get clientHeight(): number;
|
|
11
19
|
set scrollLimit(value: number);
|
|
12
20
|
get scrollLimit(): number;
|
|
13
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScrollCheckDirective, never>;
|
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "scrollLimit": "vi-scroll-check"; }, { "limitExceed": "limitExceed"; }, never>;
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "offset": "offset"; "scrollLimit": "vi-scroll-check"; }, { "top": "top"; "bottom": "bottom"; "limitExceed": "limitExceed"; }, never>;
|
|
15
23
|
}
|
|
@@ -17,27 +17,56 @@ 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.offset = 50;
|
|
27
|
+
//--------------------------------------------------------------------------
|
|
28
|
+
//
|
|
29
|
+
// Protected Methods
|
|
30
|
+
//
|
|
31
|
+
//--------------------------------------------------------------------------
|
|
32
|
+
this.check = () => {
|
|
33
|
+
let value = this.scrollValue >= this.scrollLimit;
|
|
34
|
+
if (value !== this.isExceedLimit) {
|
|
35
|
+
this.isExceedLimit = value;
|
|
36
|
+
this.limitExceed.emit(this.isExceedLimit);
|
|
37
|
+
}
|
|
38
|
+
value = this.scrollValue + this.clientHeight + this.offset > this.scrollHeight;
|
|
39
|
+
if (value != this.isBottom) {
|
|
40
|
+
this.bottom.next(value);
|
|
41
|
+
}
|
|
42
|
+
value = this.scrollValue < this.offset;
|
|
43
|
+
if (value != this.isTop) {
|
|
44
|
+
this.top.next(value);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
this.element = element.nativeElement;
|
|
48
|
+
fromEvent(this.element, 'scroll')
|
|
49
|
+
.pipe(debounceTime(DateUtil.MILLISECONDS_SECOND / 10), takeUntil(this.destroyed))
|
|
50
|
+
.subscribe(this.check);
|
|
29
51
|
}
|
|
30
52
|
//--------------------------------------------------------------------------
|
|
31
53
|
//
|
|
32
|
-
//
|
|
54
|
+
// Private Properties
|
|
33
55
|
//
|
|
34
56
|
//--------------------------------------------------------------------------
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
// --------------------------------------------------------------------------
|
|
58
|
+
//
|
|
59
|
+
// Private Properties
|
|
60
|
+
//
|
|
61
|
+
// --------------------------------------------------------------------------
|
|
62
|
+
get scrollValue() {
|
|
63
|
+
return this.element.scrollTop;
|
|
64
|
+
}
|
|
65
|
+
get scrollHeight() {
|
|
66
|
+
return this.element.scrollHeight;
|
|
67
|
+
}
|
|
68
|
+
get clientHeight() {
|
|
69
|
+
return this.element.clientHeight;
|
|
41
70
|
}
|
|
42
71
|
//--------------------------------------------------------------------------
|
|
43
72
|
//
|
|
@@ -56,16 +85,22 @@ export class ScrollCheckDirective extends DestroyableContainer {
|
|
|
56
85
|
}
|
|
57
86
|
}
|
|
58
87
|
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 });
|
|
88
|
+
ScrollCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ScrollCheckDirective, selector: "[vi-scroll-check]", inputs: { offset: "offset", scrollLimit: ["vi-scroll-check", "scrollLimit"] }, outputs: { top: "top", bottom: "bottom", limitExceed: "limitExceed" }, usesInheritance: true, ngImport: i0 });
|
|
60
89
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ScrollCheckDirective, decorators: [{
|
|
61
90
|
type: Directive,
|
|
62
91
|
args: [{
|
|
63
92
|
selector: '[vi-scroll-check]'
|
|
64
93
|
}]
|
|
65
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: {
|
|
94
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { top: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}], bottom: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}], limitExceed: [{
|
|
66
99
|
type: Output
|
|
100
|
+
}], offset: [{
|
|
101
|
+
type: Input
|
|
67
102
|
}], scrollLimit: [{
|
|
68
103
|
type: Input,
|
|
69
104
|
args: ['vi-scroll-check']
|
|
70
105
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nyb2xsQ2hlY2tEaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlL1Njcm9sbENoZWNrRGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUF5QjFELDRFQUE0RTtJQUM1RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw0RUFBNEU7SUFFNUUsWUFBWSxPQUFtQjtRQUMzQixLQUFLLEVBQUUsQ0FBQztRQS9CWiw0RUFBNEU7UUFDNUUsRUFBRTtRQUNGLGFBQWE7UUFDYixFQUFFO1FBQ0YsNEVBQTRFO1FBR3JFLFFBQUcsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxXQUFNLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkQsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU12RCxVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFHaEMsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQWlCM0IsNEVBQTRFO1FBQzVFLEVBQUU7UUFDRixvQkFBb0I7UUFDcEIsRUFBRTtRQUNGLDRFQUE0RTtRQUVsRSxVQUFLLEdBQUcsR0FBUyxFQUFFO1lBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNqRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzdDO1lBRUQsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDL0UsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0I7WUFFRCxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDO1FBN0JFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUVyQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7YUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoRixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUEwQkQsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDRFQUE0RTtJQUU1RSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLHFCQUFxQjtJQUNyQixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLElBQWMsV0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFjLFlBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBYyxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDckMsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxFQUFFO0lBQ0Ysb0JBQW9CO0lBQ3BCLEVBQUU7SUFDRiw0RUFBNEU7SUFFNUUsSUFDVyxXQUFXLENBQUMsS0FBYTtRQUNoQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzVCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDOztrSEF0R1Esb0JBQW9CO3NHQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2lCQUNoQztpR0FTVSxHQUFHO3NCQURULE1BQU07Z0JBR0EsTUFBTTtzQkFEWixNQUFNO2dCQUdBLFdBQVc7c0JBRGpCLE1BQU07Z0JBWUEsTUFBTTtzQkFEWixLQUFLO2dCQXVFSyxXQUFXO3NCQURyQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZUNvbnRhaW5lciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3ZpLXNjcm9sbC1jaGVja10nXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbENoZWNrRGlyZWN0aXZlIGV4dGVuZHMgRGVzdHJveWFibGVDb250YWluZXIge1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9wOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGJvdHRvbTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsaW1pdEV4Y2VlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfc2Nyb2xsTGltaXQ6IG51bWJlcjtcblxuICAgIHByaXZhdGUgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIGlzVG9wOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0JvdHRvbTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFeGNlZWRMaW1pdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb2Zmc2V0OiBudW1iZXIgPSA1MDtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoRGF0ZVV0aWwuTUlMTElTRUNPTkRTX1NFQ09ORCAvIDEwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5jaGVjayk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgY2hlY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc2Nyb2xsVmFsdWUgPj0gdGhpcy5zY3JvbGxMaW1pdDtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmlzRXhjZWVkTGltaXQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFeGNlZWRMaW1pdCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5saW1pdEV4Y2VlZC5lbWl0KHRoaXMuaXNFeGNlZWRMaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSA9IHRoaXMuc2Nyb2xsVmFsdWUgKyB0aGlzLmNsaWVudEhlaWdodCArIHRoaXMub2Zmc2V0ID4gdGhpcy5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIGlmICh2YWx1ZSAhPSB0aGlzLmlzQm90dG9tKSB7XG4gICAgICAgICAgICB0aGlzLmJvdHRvbS5uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlID0gdGhpcy5zY3JvbGxWYWx1ZSA8IHRoaXMub2Zmc2V0O1xuICAgICAgICBpZiAodmFsdWUgIT0gdGhpcy5pc1RvcCkge1xuICAgICAgICAgICAgdGhpcy50b3AubmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFByaXZhdGUgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHNjcm9sbFZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0IHNjcm9sbEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXQgY2xpZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQdWJsaWMgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgQElucHV0KCd2aS1zY3JvbGwtY2hlY2snKVxuICAgIHB1YmxpYyBzZXQgc2Nyb2xsTGltaXQodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodmFsdWUgPT0gdGhpcy5fc2Nyb2xsTGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zY3JvbGxMaW1pdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNoZWNrKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgc2Nyb2xsTGltaXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbExpbWl0O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2951,27 +2951,56 @@ 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.offset = 50;
|
|
2961
|
+
//--------------------------------------------------------------------------
|
|
2962
|
+
//
|
|
2963
|
+
// Protected Methods
|
|
2964
|
+
//
|
|
2965
|
+
//--------------------------------------------------------------------------
|
|
2966
|
+
this.check = () => {
|
|
2967
|
+
let value = this.scrollValue >= this.scrollLimit;
|
|
2968
|
+
if (value !== this.isExceedLimit) {
|
|
2969
|
+
this.isExceedLimit = value;
|
|
2970
|
+
this.limitExceed.emit(this.isExceedLimit);
|
|
2971
|
+
}
|
|
2972
|
+
value = this.scrollValue + this.clientHeight + this.offset > this.scrollHeight;
|
|
2973
|
+
if (value != this.isBottom) {
|
|
2974
|
+
this.bottom.next(value);
|
|
2975
|
+
}
|
|
2976
|
+
value = this.scrollValue < this.offset;
|
|
2977
|
+
if (value != this.isTop) {
|
|
2978
|
+
this.top.next(value);
|
|
2979
|
+
}
|
|
2980
|
+
};
|
|
2981
|
+
this.element = element.nativeElement;
|
|
2982
|
+
fromEvent(this.element, 'scroll')
|
|
2983
|
+
.pipe(debounceTime(DateUtil.MILLISECONDS_SECOND / 10), takeUntil(this.destroyed))
|
|
2984
|
+
.subscribe(this.check);
|
|
2963
2985
|
}
|
|
2964
2986
|
//--------------------------------------------------------------------------
|
|
2965
2987
|
//
|
|
2966
|
-
//
|
|
2988
|
+
// Private Properties
|
|
2967
2989
|
//
|
|
2968
2990
|
//--------------------------------------------------------------------------
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2991
|
+
// --------------------------------------------------------------------------
|
|
2992
|
+
//
|
|
2993
|
+
// Private Properties
|
|
2994
|
+
//
|
|
2995
|
+
// --------------------------------------------------------------------------
|
|
2996
|
+
get scrollValue() {
|
|
2997
|
+
return this.element.scrollTop;
|
|
2998
|
+
}
|
|
2999
|
+
get scrollHeight() {
|
|
3000
|
+
return this.element.scrollHeight;
|
|
3001
|
+
}
|
|
3002
|
+
get clientHeight() {
|
|
3003
|
+
return this.element.clientHeight;
|
|
2975
3004
|
}
|
|
2976
3005
|
//--------------------------------------------------------------------------
|
|
2977
3006
|
//
|
|
@@ -2990,14 +3019,20 @@ class ScrollCheckDirective extends DestroyableContainer {
|
|
|
2990
3019
|
}
|
|
2991
3020
|
}
|
|
2992
3021
|
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 });
|
|
3022
|
+
ScrollCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ScrollCheckDirective, selector: "[vi-scroll-check]", inputs: { offset: "offset", scrollLimit: ["vi-scroll-check", "scrollLimit"] }, outputs: { top: "top", bottom: "bottom", limitExceed: "limitExceed" }, usesInheritance: true, ngImport: i0 });
|
|
2994
3023
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ScrollCheckDirective, decorators: [{
|
|
2995
3024
|
type: Directive,
|
|
2996
3025
|
args: [{
|
|
2997
3026
|
selector: '[vi-scroll-check]'
|
|
2998
3027
|
}]
|
|
2999
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: {
|
|
3028
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { top: [{
|
|
3000
3029
|
type: Output
|
|
3030
|
+
}], bottom: [{
|
|
3031
|
+
type: Output
|
|
3032
|
+
}], limitExceed: [{
|
|
3033
|
+
type: Output
|
|
3034
|
+
}], offset: [{
|
|
3035
|
+
type: Input
|
|
3001
3036
|
}], scrollLimit: [{
|
|
3002
3037
|
type: Input,
|
|
3003
3038
|
args: ['vi-scroll-check']
|