UNPKG

@nicky-lenaers/ngx-scroll-to

Version:

A simple Angular 4+ plugin enabling you to smooth scroll to any element on your page and enhance scroll-based features in your app.

62 lines 7.72 kB
import { Directive, Input } from '@angular/core'; import { DEFAULTS, EVENTS } from './scroll-to-helpers'; import * as i0 from "@angular/core"; import * as i1 from "./scroll-to.service"; export class ScrollToDirective { constructor(elementRef, scrollToService, renderer2) { this.elementRef = elementRef; this.scrollToService = scrollToService; this.renderer2 = renderer2; this.ngxScrollTo = DEFAULTS.target; this.ngxScrollToEvent = DEFAULTS.action; this.ngxScrollToDuration = DEFAULTS.duration; this.ngxScrollToEasing = DEFAULTS.easing; this.ngxScrollToOffset = DEFAULTS.offset; this.ngxScrollToOffsetMap = DEFAULTS.offsetMap; } /** * Angular Lifecycle Hook - After View Init * * @todo Implement Subscription for Events * * @returns void */ ngAfterViewInit() { // Test Event Support if (EVENTS.indexOf(this.ngxScrollToEvent) === -1) { throw new Error(`Unsupported Event '${this.ngxScrollToEvent}'`); } // Listen for the trigger... this.renderer2.listen(this.elementRef.nativeElement, this.ngxScrollToEvent, (event) => { this.options = { target: this.ngxScrollTo, duration: this.ngxScrollToDuration, easing: this.ngxScrollToEasing, offset: this.ngxScrollToOffset, offsetMap: this.ngxScrollToOffsetMap }; this.scrollToService.scrollTo(this.options); }); } } ScrollToDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ScrollToDirective, deps: [{ token: i0.ElementRef }, { token: i1.ScrollToService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); ScrollToDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: ScrollToDirective, selector: "[ngxScrollTo]", inputs: { ngxScrollTo: "ngxScrollTo", ngxScrollToEvent: "ngxScrollToEvent", ngxScrollToDuration: "ngxScrollToDuration", ngxScrollToEasing: "ngxScrollToEasing", ngxScrollToOffset: "ngxScrollToOffset", ngxScrollToOffsetMap: "ngxScrollToOffsetMap" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ScrollToDirective, decorators: [{ type: Directive, args: [{ selector: '[ngxScrollTo]' }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ScrollToService }, { type: i0.Renderer2 }]; }, propDecorators: { ngxScrollTo: [{ type: Input }], ngxScrollToEvent: [{ type: Input }], ngxScrollToDuration: [{ type: Input }], ngxScrollToEasing: [{ type: Input }], ngxScrollToOffset: [{ type: Input }], ngxScrollToOffsetMap: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3JvbGwtdG8vc3JjL2xpYi9zY3JvbGwtdG8uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFTdkQsTUFBTSxPQUFPLGlCQUFpQjtJQXNCNUIsWUFDVSxVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxTQUFvQjtRQUZwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBdEI5QixnQkFBVyxHQUFtQixRQUFRLENBQUMsTUFBTSxDQUFDO1FBRzlDLHFCQUFnQixHQUFrQixRQUFRLENBQUMsTUFBTSxDQUFDO1FBR2xELHdCQUFtQixHQUFXLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFHaEQsc0JBQWlCLEdBQTRCLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFHN0Qsc0JBQWlCLEdBQVcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUc1Qyx5QkFBb0IsR0FBc0IsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQVE3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZTtRQUViLHFCQUFxQjtRQUNyQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztTQUNqRTtRQUVELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQ3hFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFFZixJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCO2dCQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7YUFDckMsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzhHQXhEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjt1SkFJQyxXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERFRkFVTFRTLCBFVkVOVFMgfSBmcm9tICcuL3Njcm9sbC10by1oZWxwZXJzJztcbmltcG9ydCB7IFNjcm9sbFRvQ29uZmlnT3B0aW9ucywgU2Nyb2xsVG9PZmZzZXRNYXAsIFNjcm9sbFRvVGFyZ2V0IH0gZnJvbSAnLi9zY3JvbGwtdG8tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY3JvbGxUb0FuaW1hdGlvbkVhc2luZyB9IGZyb20gJy4vc2Nyb2xsLXRvLWVhc2luZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2Nyb2xsVG9FdmVudCB9IGZyb20gJy4vc2Nyb2xsLXRvLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY3JvbGxUb1NlcnZpY2UgfSBmcm9tICcuL3Njcm9sbC10by5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25neFNjcm9sbFRvXSdcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsVG9EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKVxuICBuZ3hTY3JvbGxUbzogU2Nyb2xsVG9UYXJnZXQgPSBERUZBVUxUUy50YXJnZXQ7XG5cbiAgQElucHV0KClcbiAgbmd4U2Nyb2xsVG9FdmVudDogU2Nyb2xsVG9FdmVudCA9IERFRkFVTFRTLmFjdGlvbjtcblxuICBASW5wdXQoKVxuICBuZ3hTY3JvbGxUb0R1cmF0aW9uOiBudW1iZXIgPSBERUZBVUxUUy5kdXJhdGlvbjtcblxuICBASW5wdXQoKVxuICBuZ3hTY3JvbGxUb0Vhc2luZzogU2Nyb2xsVG9BbmltYXRpb25FYXNpbmcgPSBERUZBVUxUUy5lYXNpbmc7XG5cbiAgQElucHV0KClcbiAgbmd4U2Nyb2xsVG9PZmZzZXQ6IG51bWJlciA9IERFRkFVTFRTLm9mZnNldDtcblxuICBASW5wdXQoKVxuICBuZ3hTY3JvbGxUb09mZnNldE1hcDogU2Nyb2xsVG9PZmZzZXRNYXAgPSBERUZBVUxUUy5vZmZzZXRNYXA7XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBTY3JvbGxUb0NvbmZpZ09wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgc2Nyb2xsVG9TZXJ2aWNlOiBTY3JvbGxUb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMikge1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgTGlmZWN5Y2xlIEhvb2sgLSBBZnRlciBWaWV3IEluaXRcbiAgICpcbiAgICogQHRvZG8gSW1wbGVtZW50IFN1YnNjcmlwdGlvbiBmb3IgRXZlbnRzXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIC8vIFRlc3QgRXZlbnQgU3VwcG9ydFxuICAgIGlmIChFVkVOVFMuaW5kZXhPZih0aGlzLm5neFNjcm9sbFRvRXZlbnQpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBFdmVudCAnJHt0aGlzLm5neFNjcm9sbFRvRXZlbnR9J2ApO1xuICAgIH1cblxuICAgIC8vIExpc3RlbiBmb3IgdGhlIHRyaWdnZXIuLi5cbiAgICB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMubmd4U2Nyb2xsVG9FdmVudCxcbiAgICAgIChldmVudDogRXZlbnQpID0+IHtcblxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLm5neFNjcm9sbFRvLFxuICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLm5neFNjcm9sbFRvRHVyYXRpb24sXG4gICAgICAgICAgZWFzaW5nOiB0aGlzLm5neFNjcm9sbFRvRWFzaW5nLFxuICAgICAgICAgIG9mZnNldDogdGhpcy5uZ3hTY3JvbGxUb09mZnNldCxcbiAgICAgICAgICBvZmZzZXRNYXA6IHRoaXMubmd4U2Nyb2xsVG9PZmZzZXRNYXBcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNjcm9sbFRvU2VydmljZS5zY3JvbGxUbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==