@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
JavaScript
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==