UNPKG

@akaustav/ngx-scroll-to

Version:

A simple Angular 12 plugin enabling you to smooth scroll to any element on your page and enhance scroll-based features in your app. This is a fork from @nicky-lenaers/ngx-scroll-to that adds support for Angular 12.

62 lines 7.97 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: "12.2.17", ngImport: i0, type: ScrollToDirective, deps: [{ token: i0.ElementRef }, { token: i1.ScrollToService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); ScrollToDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", 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: "12.2.17", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3JvbGwtdG8vc3JjL2xpYi9zY3JvbGwtdG8uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFTdkQsTUFBTSxPQUFPLGlCQUFpQjtJQXNCNUIsWUFDVSxVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxTQUFvQjtRQUZwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBdEI5QixnQkFBVyxHQUFtQixRQUFRLENBQUMsTUFBTSxDQUFDO1FBRzlDLHFCQUFnQixHQUFrQixRQUFRLENBQUMsTUFBTSxDQUFDO1FBR2xELHdCQUFtQixHQUFXLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFHaEQsc0JBQWlCLEdBQTRCLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFHN0Qsc0JBQWlCLEdBQVcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUc1Qyx5QkFBb0IsR0FBc0IsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQVE3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZTtRQUViLHFCQUFxQjtRQUNyQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztTQUNqRTtRQUVELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQ3hFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFFZixJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCO2dCQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7YUFDckMsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OytHQXhEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjt1SkFJQyxXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBERUZBVUxUUywgRVZFTlRTIH0gZnJvbSAnLi9zY3JvbGwtdG8taGVscGVycyc7XHJcbmltcG9ydCB7IFNjcm9sbFRvQ29uZmlnT3B0aW9ucywgU2Nyb2xsVG9PZmZzZXRNYXAsIFNjcm9sbFRvVGFyZ2V0IH0gZnJvbSAnLi9zY3JvbGwtdG8tY29uZmlnLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNjcm9sbFRvQW5pbWF0aW9uRWFzaW5nIH0gZnJvbSAnLi9zY3JvbGwtdG8tZWFzaW5nLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNjcm9sbFRvRXZlbnQgfSBmcm9tICcuL3Njcm9sbC10by1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTY3JvbGxUb1NlcnZpY2UgfSBmcm9tICcuL3Njcm9sbC10by5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW25neFNjcm9sbFRvXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcm9sbFRvRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbmd4U2Nyb2xsVG86IFNjcm9sbFRvVGFyZ2V0ID0gREVGQVVMVFMudGFyZ2V0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG5neFNjcm9sbFRvRXZlbnQ6IFNjcm9sbFRvRXZlbnQgPSBERUZBVUxUUy5hY3Rpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbmd4U2Nyb2xsVG9EdXJhdGlvbjogbnVtYmVyID0gREVGQVVMVFMuZHVyYXRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbmd4U2Nyb2xsVG9FYXNpbmc6IFNjcm9sbFRvQW5pbWF0aW9uRWFzaW5nID0gREVGQVVMVFMuZWFzaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG5neFNjcm9sbFRvT2Zmc2V0OiBudW1iZXIgPSBERUZBVUxUUy5vZmZzZXQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbmd4U2Nyb2xsVG9PZmZzZXRNYXA6IFNjcm9sbFRvT2Zmc2V0TWFwID0gREVGQVVMVFMub2Zmc2V0TWFwO1xyXG5cclxuICBwcml2YXRlIG9wdGlvbnM6IFNjcm9sbFRvQ29uZmlnT3B0aW9ucztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHNjcm9sbFRvU2VydmljZTogU2Nyb2xsVG9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMikge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW5ndWxhciBMaWZlY3ljbGUgSG9vayAtIEFmdGVyIFZpZXcgSW5pdFxyXG4gICAqXHJcbiAgICogQHRvZG8gSW1wbGVtZW50IFN1YnNjcmlwdGlvbiBmb3IgRXZlbnRzXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB2b2lkXHJcbiAgICovXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vIFRlc3QgRXZlbnQgU3VwcG9ydFxyXG4gICAgaWYgKEVWRU5UUy5pbmRleE9mKHRoaXMubmd4U2Nyb2xsVG9FdmVudCkgPT09IC0xKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgRXZlbnQgJyR7dGhpcy5uZ3hTY3JvbGxUb0V2ZW50fSdgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0ZW4gZm9yIHRoZSB0cmlnZ2VyLi4uXHJcbiAgICB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMubmd4U2Nyb2xsVG9FdmVudCxcclxuICAgICAgKGV2ZW50OiBFdmVudCkgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XHJcbiAgICAgICAgICB0YXJnZXQ6IHRoaXMubmd4U2Nyb2xsVG8sXHJcbiAgICAgICAgICBkdXJhdGlvbjogdGhpcy5uZ3hTY3JvbGxUb0R1cmF0aW9uLFxyXG4gICAgICAgICAgZWFzaW5nOiB0aGlzLm5neFNjcm9sbFRvRWFzaW5nLFxyXG4gICAgICAgICAgb2Zmc2V0OiB0aGlzLm5neFNjcm9sbFRvT2Zmc2V0LFxyXG4gICAgICAgICAgb2Zmc2V0TWFwOiB0aGlzLm5neFNjcm9sbFRvT2Zmc2V0TWFwXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1NlcnZpY2Uuc2Nyb2xsVG8odGhpcy5vcHRpb25zKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==