UNPKG

ngx-lazy-scroll

Version:

A simple lazy loading directive for large form elements. This will increase DOM rendering speed.

46 lines 3.53 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, HostListener, Input, Output, EventEmitter } from '@angular/core'; export class NgxLazyScrollDirective { constructor() { this.limit = 1; this.heightAdjust = '0'; this.stepEvent = new EventEmitter(); } /** * @param {?} event * @return {?} */ scrollHandler(event) { /** @type {?} */ const tracker = event.target; /** @type {?} */ const limit = tracker.scrollHeight + Number(this.heightAdjust); if (Number(tracker.offsetHeight) + Number(tracker.scrollTop) > limit) { this.limit++; this.stepEvent.emit(this.limit); } } } NgxLazyScrollDirective.decorators = [ { type: Directive, args: [{ selector: '[lazyScroll]' },] } ]; NgxLazyScrollDirective.propDecorators = { limit: [{ type: Input }], heightAdjust: [{ type: Input }], stepEvent: [{ type: Output }], scrollHandler: [{ type: HostListener, args: ['scroll', ['$event'],] }] }; if (false) { /** @type {?} */ NgxLazyScrollDirective.prototype.limit; /** @type {?} */ NgxLazyScrollDirective.prototype.heightAdjust; /** @type {?} */ NgxLazyScrollDirective.prototype.stepEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxhenktc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1sYXp5LXNjcm9sbC8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtbGF6eS1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUl2QixNQUFNLE9BQU8sc0JBQXNCO0lBSG5DO1FBSVcsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMxQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVkzQyxDQUFDOzs7OztJQVhxQyxhQUFhLENBQUMsS0FBSzs7Y0FDL0MsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNOztjQUN0QixLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM5RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLEVBQUU7WUFDcEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7O1lBZEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2FBQ3pCOzs7b0JBRUUsS0FBSzsyQkFDTCxLQUFLO3dCQUNMLE1BQU07NEJBQ04sWUFBWSxTQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7OztJQUhsQyx1Q0FBMkI7O0lBQzNCLDhDQUFvQzs7SUFDcEMsMkNBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsYXp5U2Nyb2xsXSdcbn0pXG5leHBvcnQgY2xhc3MgTmd4TGF6eVNjcm9sbERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBoZWlnaHRBZGp1c3Q6IHN0cmluZyA9ICcwJztcbiAgQE91dHB1dCgpIHN0ZXBFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSkgc2Nyb2xsSGFuZGxlcihldmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRyYWNrZXIgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgbGltaXQgPSB0cmFja2VyLnNjcm9sbEhlaWdodCArIE51bWJlcih0aGlzLmhlaWdodEFkanVzdCk7XG4gICAgaWYgKE51bWJlcih0cmFja2VyLm9mZnNldEhlaWdodCkgKyBOdW1iZXIodHJhY2tlci5zY3JvbGxUb3ApID4gbGltaXQpIHtcbiAgICAgIHRoaXMubGltaXQrKztcbiAgICAgIHRoaXMuc3RlcEV2ZW50LmVtaXQodGhpcy5saW1pdCk7XG4gICAgfVxuICB9XG5cblxuXG59Il19