UNPKG

ngx-infinite-scroller

Version:

Infinite bidirectional scroll directive for Angular 11

30 lines 5.49 kB
import { filter } from 'rxjs/operators'; import { StrategyBase } from './strategy-base'; import { InitialScrollPosition } from '../enum/initial-scroll-position-type.enum'; export class ScrollingToBottom extends StrategyBase { constructor(directive, state) { super(directive, state); } scrollDirectionChanged(scrollPairChanged) { return scrollPairChanged.pipe(filter((scrollPositions) => { return super.wasScrolledDown(scrollPositions[0], scrollPositions[1]); })); } scrollRequestZoneChanged(scrollDirectionChanged) { return scrollDirectionChanged.pipe(filter((scrollPositions) => { return super.isScrollDownEnough(scrollPositions[1], this.directive.scrollDownPercentilePositionTrigger); })); } askForUpdate() { this.directive.onScrollDown.next(); } setInitialScrollPosition() { const initialScrollPositionValue = super.getInitialScrollPositionValue(InitialScrollPosition.TOP); this.directive.scrollTo(initialScrollPositionValue); } setPreviousScrollPosition() { const prevScrollPosition = this.state.previousScrollTop; this.directive.scrollTo(prevScrollPosition); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLXRvLWJvdHRvbS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8iLCJzb3VyY2VzIjpbInNyYy9hcHAvc2Nyb2xsaW5nLXN0cmF0ZWd5L3Njcm9sbGluZy10by1ib3R0b20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU8vQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVsRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsWUFBWTtJQUVqRCxZQUNFLFNBQXVDLEVBQ3ZDLEtBQTRCO1FBRTVCLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLHNCQUFzQixDQUFDLGlCQUErQztRQUUzRSxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FDM0IsTUFBTSxDQUFDLENBQUMsZUFBaUMsRUFBRSxFQUFFO1lBQzNDLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FDMUIsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNsQixlQUFlLENBQUMsQ0FBQyxDQUFDLENBQ25CLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLHdCQUF3QixDQUFDLHNCQUFvRDtRQUVsRixPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FDaEMsTUFBTSxDQUFDLENBQUMsZUFBaUMsRUFBRSxFQUFFO1lBQzNDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUM3QixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsbUNBQW1DLENBQ25ELENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyw2QkFBNkIsQ0FDcEUscUJBQXFCLENBQUMsR0FBRyxDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0seUJBQXlCO1FBQzlCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU3RyYXRlZ3lCYXNlIH0gZnJvbSAnLi9zdHJhdGVneS1iYXNlJztcblxuaW1wb3J0IHsgTmd4SW5maW5pdGVTY3JvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uL25neC1pbmZpbml0ZS1zY3JvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vZGlyZWN0aXZlLXN0YXRlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTY3JvbGxpbmdTdHJhdGVneSB9IGZyb20gJy4uL21vZGVsL3Njcm9sbGluZy1zdHJhdGVneS5tb2RlbCc7XG5pbXBvcnQgeyBTY3JvbGxQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVsL3Njcm9sbC1wb3NpdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBJbml0aWFsU2Nyb2xsUG9zaXRpb24gfSBmcm9tICcuLi9lbnVtL2luaXRpYWwtc2Nyb2xsLXBvc2l0aW9uLXR5cGUuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBTY3JvbGxpbmdUb0JvdHRvbSBleHRlbmRzIFN0cmF0ZWd5QmFzZSBpbXBsZW1lbnRzIFNjcm9sbGluZ1N0cmF0ZWd5IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkaXJlY3RpdmU6IE5neEluZmluaXRlU2Nyb2xsZXJEaXJlY3RpdmUsXG4gICAgc3RhdGU6IERpcmVjdGl2ZVN0YXRlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihkaXJlY3RpdmUsIHN0YXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxEaXJlY3Rpb25DaGFuZ2VkKHNjcm9sbFBhaXJDaGFuZ2VkOiBPYnNlcnZhYmxlPFNjcm9sbFBvc2l0aW9uW10+KTpcbiAgICBPYnNlcnZhYmxlPFNjcm9sbFBvc2l0aW9uW10+IHtcbiAgICByZXR1cm4gc2Nyb2xsUGFpckNoYW5nZWQucGlwZShcbiAgICAgIGZpbHRlcigoc2Nyb2xsUG9zaXRpb25zOiBTY3JvbGxQb3NpdGlvbltdKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBlci53YXNTY3JvbGxlZERvd24oXG4gICAgICAgICAgc2Nyb2xsUG9zaXRpb25zWzBdLFxuICAgICAgICAgIHNjcm9sbFBvc2l0aW9uc1sxXVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFJlcXVlc3Rab25lQ2hhbmdlZChzY3JvbGxEaXJlY3Rpb25DaGFuZ2VkOiBPYnNlcnZhYmxlPFNjcm9sbFBvc2l0aW9uW10+KTpcbiAgICBPYnNlcnZhYmxlPFNjcm9sbFBvc2l0aW9uW10+IHtcbiAgICByZXR1cm4gc2Nyb2xsRGlyZWN0aW9uQ2hhbmdlZC5waXBlKFxuICAgICAgZmlsdGVyKChzY3JvbGxQb3NpdGlvbnM6IFNjcm9sbFBvc2l0aW9uW10pID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmlzU2Nyb2xsRG93bkVub3VnaChcbiAgICAgICAgICBzY3JvbGxQb3NpdGlvbnNbMV0sXG4gICAgICAgICAgdGhpcy5kaXJlY3RpdmUuc2Nyb2xsRG93blBlcmNlbnRpbGVQb3NpdGlvblRyaWdnZXJcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc2tGb3JVcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXJlY3RpdmUub25TY3JvbGxEb3duLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbml0aWFsU2Nyb2xsUG9zaXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgaW5pdGlhbFNjcm9sbFBvc2l0aW9uVmFsdWUgPSBzdXBlci5nZXRJbml0aWFsU2Nyb2xsUG9zaXRpb25WYWx1ZShcbiAgICAgIEluaXRpYWxTY3JvbGxQb3NpdGlvbi5UT1AsXG4gICAgKTtcblxuICAgIHRoaXMuZGlyZWN0aXZlLnNjcm9sbFRvKGluaXRpYWxTY3JvbGxQb3NpdGlvblZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcmV2aW91c1Njcm9sbFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZTY3JvbGxQb3NpdGlvbiA9IHRoaXMuc3RhdGUucHJldmlvdXNTY3JvbGxUb3A7XG4gICAgdGhpcy5kaXJlY3RpdmUuc2Nyb2xsVG8ocHJldlNjcm9sbFBvc2l0aW9uKTtcbiAgfVxufVxuIl19