@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
106 lines • 7.82 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lazy-load/lazy-load.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';
import { fromEvent } from 'rxjs';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
var LazyLoadDirective = /** @class */ (function () {
function LazyLoadDirective(el) {
this.el = el;
// 启用懒加载,默认不启用
this.enableLazyLoad = false;
// 加载更多
this.loadMore = new EventEmitter();
// 触发懒加载的距离
this.loadFactor = 5;
}
/**
* @param {?} changes
* @return {?}
*/
LazyLoadDirective.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
if (changes && changes['enableLazyLoad']) {
if (changes.enableLazyLoad.currentValue) {
this.scrollSubscription = fromEvent(this.el.nativeElement, 'scroll').pipe(debounceTime(300), distinctUntilChanged()).subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) { return _this.scrollList(event); }));
}
else if (this.scrollSubscription) {
this.scrollSubscription.unsubscribe();
}
else {
return;
}
}
};
/**
* @return {?}
*/
LazyLoadDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.scrollSubscription) {
this.scrollSubscription.unsubscribe();
}
};
/**
* @param {?} event
* @return {?}
*/
LazyLoadDirective.prototype.scrollList = /**
* @param {?} event
* @return {?}
*/
function (event) {
/** @type {?} */
var targetEl = event.target;
/** @type {?} */
var clientHeight = targetEl.clientHeight;
/** @type {?} */
var scrollHeight = targetEl.scrollHeight;
/** @type {?} */
var scrollTop = targetEl.scrollTop;
if (scrollTop !== 0 && (scrollTop + clientHeight + this.loadFactor >= scrollHeight)) {
this.loadMore.emit(event);
}
};
LazyLoadDirective.decorators = [
{ type: Directive, args: [{ selector: '[dLazyLoad]' },] }
];
/** @nocollapse */
LazyLoadDirective.ctorParameters = function () { return [
{ type: ElementRef }
]; };
LazyLoadDirective.propDecorators = {
enableLazyLoad: [{ type: Input }],
loadMore: [{ type: Output }]
};
return LazyLoadDirective;
}());
export { LazyLoadDirective };
if (false) {
/** @type {?} */
LazyLoadDirective.prototype.enableLazyLoad;
/** @type {?} */
LazyLoadDirective.prototype.loadMore;
/** @type {?} */
LazyLoadDirective.prototype.scrollSubscription;
/** @type {?} */
LazyLoadDirective.prototype.loadFactor;
/**
* @type {?}
* @private
*/
LazyLoadDirective.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL3V0aWxzLyIsInNvdXJjZXMiOlsibGF6eS1sb2FkL2xhenktbG9hZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRTtJQWFFLDJCQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTs7UUFUekIsbUJBQWMsR0FBRyxLQUFLLENBQUM7O1FBRXRCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDOztRQUt4QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO0lBRXVCLENBQUM7Ozs7O0lBRXZDLHVDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUFsQyxpQkFhQztRQVpDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN2RSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLENBQ3ZCLENBQUMsU0FBUzs7OztnQkFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQXRCLENBQXNCLEVBQUMsQ0FBQzthQUM5QztpQkFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE9BQU87YUFDUjtTQUNGO0lBQ0gsQ0FBQzs7OztJQUNELHVDQUFXOzs7SUFBWDtRQUNFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7Ozs7O0lBRUQsc0NBQVU7Ozs7SUFBVixVQUFXLEtBQUs7O1lBQ1IsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNOztZQUN2QixZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVk7O1lBQ3BDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWTs7WUFDcEMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTO1FBQ3BDLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtJQUVILENBQUM7O2dCQTVDRixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFOzs7O2dCQUpsQixVQUFVOzs7aUNBUTNCLEtBQUs7MkJBRUwsTUFBTTs7SUF1Q1Qsd0JBQUM7Q0FBQSxBQTdDRCxJQTZDQztTQTVDWSxpQkFBaUI7OztJQUc1QiwyQ0FBZ0M7O0lBRWhDLHFDQUF3Qzs7SUFFeEMsK0NBQWlDOztJQUdqQyx1Q0FBZTs7Ozs7SUFFSCwrQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RMYXp5TG9hZF0nIH0pXHJcbmV4cG9ydCBjbGFzcyBMYXp5TG9hZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHJcbiAgLy8g5ZCv55So5oeS5Yqg6L2977yM6buY6K6k5LiN5ZCv55SoXHJcbiAgQElucHV0KCkgZW5hYmxlTGF6eUxvYWQgPSBmYWxzZTtcclxuICAvLyDliqDovb3mm7TlpJpcclxuICBAT3V0cHV0KCkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNjcm9sbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvLyDop6blj5Hmh5LliqDovb3nmoTot53nprtcclxuICBsb2FkRmFjdG9yID0gNTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2VuYWJsZUxhenlMb2FkJ10pIHtcclxuICAgICAgaWYgKGNoYW5nZXMuZW5hYmxlTGF6eUxvYWQuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJykucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2Nyb2xsTGlzdChldmVudCkpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNjcm9sbExpc3QoZXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldEVsID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gdGFyZ2V0RWwuY2xpZW50SGVpZ2h0O1xyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gdGFyZ2V0RWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGFyZ2V0RWwuc2Nyb2xsVG9wO1xyXG4gICAgaWYgKHNjcm9sbFRvcCAhPT0gMCAmJiAoc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ICsgdGhpcy5sb2FkRmFjdG9yID49IHNjcm9sbEhlaWdodCkpIHtcclxuICAgICAgdGhpcy5sb2FkTW9yZS5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==