ngx-flip-flip
Version:
Angular Flip Flip - Angular full page scrolling components with no dependencies
92 lines • 13.8 kB
JavaScript
import { Component, Renderer2, ElementRef, Input, NgZone, Output, EventEmitter } from '@angular/core';
import { NgxFlipFlipEventsService } from '../services/events.service';
import { NgxFlipFlipSlidesService } from '../services/slides.service';
import { Direction } from '../models/direction.enum';
import * as i0 from "@angular/core";
import * as i1 from "../services/slides.service";
import * as i2 from "../services/events.service";
export class NgxFlipFlipWrapper {
constructor(renderer, elementRef, slidesService, eventsService, _zone) {
this.renderer = renderer;
this.elementRef = elementRef;
this.slidesService = slidesService;
this.eventsService = eventsService;
this._zone = _zone;
this.options = {
scrollingSpeed: 700,
easing: 'ease',
fitToSectionDelay: 500,
startFromSlide: 0,
keyboardScrolling: true,
};
this.onSlideChange = new EventEmitter();
this.changeSlidesDimensions = () => {
this.slidesService.slides.forEach((slide, index) => {
this.renderer.setStyle(slide, 'height', `${window.innerHeight}px`);
this.renderer.setStyle(slide, 'top', `${window.innerHeight * index}px`);
});
};
}
ngOnInit() {
this.slidesService.slides = document.querySelectorAll('ngx-flip-flip-slide');
this.eventsService.fitToSectionDelay = this.options.fitToSectionDelay + this.options.scrollingSpeed;
this.eventsService.isArrowNavigationActive = this.options.keyboardScrolling;
this.slidesService.selectedId = this.options.startFromSlide;
this.changeSlide();
this._zone.runOutsideAngular(() => {
this._onScrollSubscription = this.eventsService.onSlideChange$().subscribe(direction => {
this._zone.run(() => {
this.slidesService.selectedId = this.getSelectedSlideId(direction);
this.changeSlide();
this.onSlideChange.emit(direction);
});
});
this._resizeSubscription = this.eventsService.onResize$().subscribe(() => {
this._zone.run(() => {
this.changeSlidesDimensions();
this.changeSlide();
});
});
});
this.changeSlidesDimensions();
this.addStyles();
}
ngOnDestroy() {
this._resizeSubscription.unsubscribe();
this._onScrollSubscription.unsubscribe();
}
changeSlide() {
const offset = -window.innerHeight * this.slidesService.selectedId;
this.moveTo(offset);
}
moveTo(offset) {
this.renderer.setStyle(this.elementRef.nativeElement, 'transform', `translateY(${offset}px)`);
}
addStyles() {
this.renderer.setStyle(this.elementRef.nativeElement, 'transition', `transform ${this.options.scrollingSpeed}ms ${this.options.easing}`);
this.renderer.setStyle(document.body, 'margin', 0);
this.renderer.setStyle(document.body, 'overflow', 'hidden');
}
getSelectedSlideId(direction) {
return direction === Direction.Down ? this.slidesService.selectedId + 1 : this.slidesService.selectedId - 1;
}
}
/** @nocollapse */ /** @nocollapse */ NgxFlipFlipWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxFlipFlipWrapper, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.NgxFlipFlipSlidesService }, { token: i2.NgxFlipFlipEventsService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ /** @nocollapse */ NgxFlipFlipWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: NgxFlipFlipWrapper, selector: "ngx-flip-flip-wrapper", inputs: { options: "options" }, outputs: { onSlideChange: "onSlideChange" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxFlipFlipWrapper, decorators: [{
type: Component,
args: [{
selector: 'ngx-flip-flip-wrapper',
template: `<ng-content></ng-content>`,
styles: [`
:host {
display: block;
}
`],
}]
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.NgxFlipFlipSlidesService }, { type: i2.NgxFlipFlipEventsService }, { type: i0.NgZone }]; }, propDecorators: { options: [{
type: Input
}], onSlideChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmxpcC1mbGlwL3NyYy9saWIvY29tcG9uZW50cy93cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFZckQsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QixZQUNVLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLGFBQXVDLEVBQ3ZDLGFBQXVDLEVBQ3ZDLEtBQWE7UUFKYixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBakJkLFlBQU8sR0FBdUI7WUFDckMsY0FBYyxFQUFFLEdBQUc7WUFDbkIsTUFBTSxFQUFFLE1BQU07WUFDZCxpQkFBaUIsRUFBRSxHQUFHO1lBQ3RCLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQztRQUNRLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQWlEaEQsMkJBQXNCLEdBQUcsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVB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Y0FBYyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN6SSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsU0FBb0I7UUFDN0MsT0FBTyxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDOUcsQ0FBQzs7cUpBakZVLGtCQUFrQjt5SUFBbEIsa0JBQWtCLDBJQVBuQiwyQkFBMkI7MkZBTzFCLGtCQUFrQjtrQkFUOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxNQUFNLEVBQUUsQ0FBQzs7OztHQUlSLENBQUM7aUJBQ0g7NE5BRVUsT0FBTztzQkFBZixLQUFLO2dCQU9JLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5neEZsaXBGbGlwRXZlbnRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IE5neEZsaXBGbGlwU2xpZGVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NsaWRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJy4uL21vZGVscy9kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBOZ3hGbGlwRmxpcE9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvb3B0aW9ucy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1mbGlwLWZsaXAtd3JhcHBlcicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIGBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hGbGlwRmxpcFdyYXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IE5neEZsaXBGbGlwT3B0aW9ucyA9IHtcbiAgICBzY3JvbGxpbmdTcGVlZDogNzAwLFxuICAgIGVhc2luZzogJ2Vhc2UnLFxuICAgIGZpdFRvU2VjdGlvbkRlbGF5OiA1MDAsXG4gICAgc3RhcnRGcm9tU2xpZGU6IDAsXG4gICAga2V5Ym9hcmRTY3JvbGxpbmc6IHRydWUsXG4gIH07XG4gIEBPdXRwdXQoKSBvblNsaWRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEaXJlY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBfcmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX29uU2Nyb2xsU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNsaWRlc1NlcnZpY2U6IE5neEZsaXBGbGlwU2xpZGVzU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50c1NlcnZpY2U6IE5neEZsaXBGbGlwRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNsaWRlc1NlcnZpY2Uuc2xpZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbmd4LWZsaXAtZmxpcC1zbGlkZScpO1xuXG4gICAgdGhpcy5ldmVudHNTZXJ2aWNlLmZpdFRvU2VjdGlvbkRlbGF5ID0gdGhpcy5vcHRpb25zLmZpdFRvU2VjdGlvbkRlbGF5ICsgdGhpcy5vcHRpb25zLnNjcm9sbGluZ1NwZWVkO1xuICAgIHRoaXMuZXZlbnRzU2VydmljZS5pc0Fycm93TmF2aWdhdGlvbkFjdGl2ZSA9IHRoaXMub3B0aW9ucy5rZXlib2FyZFNjcm9sbGluZztcbiAgICB0aGlzLnNsaWRlc1NlcnZpY2Uuc2VsZWN0ZWRJZCA9IHRoaXMub3B0aW9ucy5zdGFydEZyb21TbGlkZTtcbiAgICB0aGlzLmNoYW5nZVNsaWRlKCk7XG5cbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblxuICAgICAgdGhpcy5fb25TY3JvbGxTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50c1NlcnZpY2Uub25TbGlkZUNoYW5nZSQoKS5zdWJzY3JpYmUoZGlyZWN0aW9uID0+IHtcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2xpZGVzU2VydmljZS5zZWxlY3RlZElkID0gdGhpcy5nZXRTZWxlY3RlZFNsaWRlSWQoZGlyZWN0aW9uKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZVNsaWRlKCk7XG4gICAgICAgICAgdGhpcy5vblNsaWRlQ2hhbmdlLmVtaXQoZGlyZWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uID0gdGhpcy5ldmVudHNTZXJ2aWNlLm9uUmVzaXplJCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZVNsaWRlc0RpbWVuc2lvbnMoKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZVNsaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhbmdlU2xpZGVzRGltZW5zaW9ucygpO1xuICAgIHRoaXMuYWRkU3R5bGVzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9vblNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VTbGlkZXNEaW1lbnNpb25zID0gKCkgPT4ge1xuICAgIHRoaXMuc2xpZGVzU2VydmljZS5zbGlkZXMuZm9yRWFjaCgoc2xpZGUsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNsaWRlLCAnaGVpZ2h0JywgYCR7d2luZG93LmlubmVySGVpZ2h0fXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNsaWRlLCAndG9wJywgYCR7d2luZG93LmlubmVySGVpZ2h0ICogaW5kZXh9cHhgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlU2xpZGUoKSB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gLXdpbmRvdy5pbm5lckhlaWdodCAqIHRoaXMuc2xpZGVzU2VydmljZS5zZWxlY3RlZElkO1xuICAgIHRoaXMubW92ZVRvKG9mZnNldCk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVUbyhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWSgke29mZnNldH1weClgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU3R5bGVzKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgYHRyYW5zZm9ybSAke3RoaXMub3B0aW9ucy5zY3JvbGxpbmdTcGVlZH1tcyAke3RoaXMub3B0aW9ucy5lYXNpbmd9YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnbWFyZ2luJywgMCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkU2xpZGVJZChkaXJlY3Rpb246IERpcmVjdGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gRGlyZWN0aW9uLkRvd24gPyB0aGlzLnNsaWRlc1NlcnZpY2Uuc2VsZWN0ZWRJZCArIDEgOiB0aGlzLnNsaWRlc1NlcnZpY2Uuc2VsZWN0ZWRJZCAtIDE7XG4gIH1cbn1cbiJdfQ==