ngx-infinite-scroller
Version:
Infinite bidirectional scroll directive for Angular 11
31 lines • 5.73 kB
JavaScript
import { filter } from 'rxjs/operators';
import { StrategyBase } from './strategy-base';
import { InitialScrollPosition } from '../enum/initial-scroll-position-type.enum';
export class ScrollingToTop extends StrategyBase {
constructor(directive, state) {
super(directive, state);
}
scrollDirectionChanged(scrollPairChanged) {
return scrollPairChanged.pipe(filter((scrollPositions) => {
return super.wasScrolledUp(scrollPositions[0], scrollPositions[1]);
}));
}
scrollRequestZoneChanged(scrollDirectionChanged) {
return scrollDirectionChanged.pipe(filter((scrollPositions) => {
return super.isScrollUpEnough(scrollPositions[1], this.directive.scrollUpPercentilePositionTrigger);
}));
}
askForUpdate() {
this.directive.onScrollUp.next();
}
setInitialScrollPosition() {
const initialScrollPositionValue = super.getInitialScrollPositionValue(InitialScrollPosition.BOTTOM);
this.directive.scrollTo(initialScrollPositionValue);
}
setPreviousScrollPosition() {
const prevScrollPosition = this.state.previousScrollTop +
(this.state.scrollHeight - this.state.previousScrollHeight);
this.directive.scrollTo(prevScrollPosition);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLXRvLXRvcC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8iLCJzb3VyY2VzIjpbInNyYy9hcHAvc2Nyb2xsaW5nLXN0cmF0ZWd5L3Njcm9sbGluZy10by10b3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU8vQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVsRixNQUFNLE9BQU8sY0FBZSxTQUFRLFlBQVk7SUFFOUMsWUFDRSxTQUF1QyxFQUN2QyxLQUE0QjtRQUU1QixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxpQkFBK0M7UUFFM0UsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQzNCLE1BQU0sQ0FBQyxDQUFDLGVBQWlDLEVBQUUsRUFBRTtZQUMzQyxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQ3hCLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFDbEIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUNuQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxzQkFBb0Q7UUFFbEYsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQ2hDLE1BQU0sQ0FBQyxDQUFDLGVBQWlDLEVBQUUsRUFBRTtZQUMzQyxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGlDQUFpQyxDQUNqRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsNkJBQTZCLENBQ3BFLHFCQUFxQixDQUFDLE1BQU0sQ0FDN0IsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLHlCQUF5QjtRQUM5QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCO1lBQ3JELENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTdHJhdGVneUJhc2UgfSBmcm9tICcuL3N0cmF0ZWd5LWJhc2UnO1xuXG5pbXBvcnQgeyBOZ3hJbmZpbml0ZVNjcm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vbmd4LWluZmluaXRlLXNjcm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9kaXJlY3RpdmUtc3RhdGUuc2VydmljZSc7XG5cbmltcG9ydCB7IFNjcm9sbGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vbW9kZWwvc2Nyb2xsaW5nLXN0cmF0ZWd5Lm1vZGVsJztcbmltcG9ydCB7IFNjcm9sbFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWwvc2Nyb2xsLXBvc2l0aW9uLm1vZGVsJztcbmltcG9ydCB7IEluaXRpYWxTY3JvbGxQb3NpdGlvbiB9IGZyb20gJy4uL2VudW0vaW5pdGlhbC1zY3JvbGwtcG9zaXRpb24tdHlwZS5lbnVtJztcblxuZXhwb3J0IGNsYXNzIFNjcm9sbGluZ1RvVG9wIGV4dGVuZHMgU3RyYXRlZ3lCYXNlIGltcGxlbWVudHMgU2Nyb2xsaW5nU3RyYXRlZ3kge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRpcmVjdGl2ZTogTmd4SW5maW5pdGVTY3JvbGxlckRpcmVjdGl2ZSxcbiAgICBzdGF0ZTogRGlyZWN0aXZlU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGRpcmVjdGl2ZSwgc3RhdGUpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbERpcmVjdGlvbkNoYW5nZWQoc2Nyb2xsUGFpckNoYW5nZWQ6IE9ic2VydmFibGU8U2Nyb2xsUG9zaXRpb25bXT4pOlxuICAgIE9ic2VydmFibGU8U2Nyb2xsUG9zaXRpb25bXT4ge1xuICAgIHJldHVybiBzY3JvbGxQYWlyQ2hhbmdlZC5waXBlKFxuICAgICAgZmlsdGVyKChzY3JvbGxQb3NpdGlvbnM6IFNjcm9sbFBvc2l0aW9uW10pID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLndhc1Njcm9sbGVkVXAoXG4gICAgICAgICAgc2Nyb2xsUG9zaXRpb25zWzBdLFxuICAgICAgICAgIHNjcm9sbFBvc2l0aW9uc1sxXVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFJlcXVlc3Rab25lQ2hhbmdlZChzY3JvbGxEaXJlY3Rpb25DaGFuZ2VkOiBPYnNlcnZhYmxlPFNjcm9sbFBvc2l0aW9uW10+KTpcbiAgICBPYnNlcnZhYmxlPFNjcm9sbFBvc2l0aW9uW10+IHtcbiAgICByZXR1cm4gc2Nyb2xsRGlyZWN0aW9uQ2hhbmdlZC5waXBlKFxuICAgICAgZmlsdGVyKChzY3JvbGxQb3NpdGlvbnM6IFNjcm9sbFBvc2l0aW9uW10pID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmlzU2Nyb2xsVXBFbm91Z2goXG4gICAgICAgICAgc2Nyb2xsUG9zaXRpb25zWzFdLFxuICAgICAgICAgIHRoaXMuZGlyZWN0aXZlLnNjcm9sbFVwUGVyY2VudGlsZVBvc2l0aW9uVHJpZ2dlclxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFza0ZvclVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpcmVjdGl2ZS5vblNjcm9sbFVwLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbml0aWFsU2Nyb2xsUG9zaXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgaW5pdGlhbFNjcm9sbFBvc2l0aW9uVmFsdWUgPSBzdXBlci5nZXRJbml0aWFsU2Nyb2xsUG9zaXRpb25WYWx1ZShcbiAgICAgIEluaXRpYWxTY3JvbGxQb3NpdGlvbi5CT1RUT00sXG4gICAgKTtcblxuICAgIHRoaXMuZGlyZWN0aXZlLnNjcm9sbFRvKGluaXRpYWxTY3JvbGxQb3NpdGlvblZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcmV2aW91c1Njcm9sbFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZTY3JvbGxQb3NpdGlvbiA9IHRoaXMuc3RhdGUucHJldmlvdXNTY3JvbGxUb3AgK1xuICAgICAgKHRoaXMuc3RhdGUuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5zdGF0ZS5wcmV2aW91c1Njcm9sbEhlaWdodCk7XG4gICAgdGhpcy5kaXJlY3RpdmUuc2Nyb2xsVG8ocHJldlNjcm9sbFBvc2l0aW9uKTtcbiAgfVxufVxuIl19