UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

106 lines 7.82 kB
/** * @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==