ngx-lazy-scroll
Version:
A simple lazy loading directive for large form elements. This will increase DOM rendering speed.
46 lines • 3.53 kB
JavaScript
/**
* @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