UNPKG

ngx-flip-flip

Version:

Angular Flip Flip - Angular full page scrolling components with no dependencies

92 lines 13.8 kB
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==