@hkjeffchan/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);
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollToDirective, deps: [{ token: i0.ElementRef }, { token: i1.ScrollToService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", 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: "18.2.13", ngImport: i0, type: ScrollToDirective, decorators: [{
type: Directive,
args: [{
selector: '[ngxScrollTo]'
}]
}], ctorParameters: () => [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3JvbGwtdG8vc3JjL2xpYi9zY3JvbGwtdG8uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFTdkQsTUFBTSxPQUFPLGlCQUFpQjtJQXNCNUIsWUFDVSxVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxTQUFvQjtRQUZwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBdEI5QixnQkFBVyxHQUFtQixRQUFRLENBQUMsTUFBTSxDQUFDO1FBRzlDLHFCQUFnQixHQUFrQixRQUFRLENBQUMsTUFBTSxDQUFDO1FBR2xELHdCQUFtQixHQUFXLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFHaEQsc0JBQWlCLEdBQTRCLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFHN0Qsc0JBQWlCLEdBQVcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUc1Qyx5QkFBb0IsR0FBc0IsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQVE3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZTtRQUViLHFCQUFxQjtRQUNyQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUN4RSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBRWYsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CO2FBQ3JDLENBQUM7WUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXhEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7cUlBSUMsV0FBVztzQkFEVixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBERUZBVUxUUywgRVZFTlRTIH0gZnJvbSAnLi9zY3JvbGwtdG8taGVscGVycyc7XG5pbXBvcnQgeyBTY3JvbGxUb0NvbmZpZ09wdGlvbnMsIFNjcm9sbFRvT2Zmc2V0TWFwLCBTY3JvbGxUb1RhcmdldCB9IGZyb20gJy4vc2Nyb2xsLXRvLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2Nyb2xsVG9BbmltYXRpb25FYXNpbmcgfSBmcm9tICcuL3Njcm9sbC10by1lYXNpbmcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNjcm9sbFRvRXZlbnQgfSBmcm9tICcuL3Njcm9sbC10by1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2Nyb2xsVG9TZXJ2aWNlIH0gZnJvbSAnLi9zY3JvbGwtdG8uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hTY3JvbGxUb10nXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFRvRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KClcbiAgbmd4U2Nyb2xsVG86IFNjcm9sbFRvVGFyZ2V0ID0gREVGQVVMVFMudGFyZ2V0O1xuXG4gIEBJbnB1dCgpXG4gIG5neFNjcm9sbFRvRXZlbnQ6IFNjcm9sbFRvRXZlbnQgPSBERUZBVUxUUy5hY3Rpb247XG5cbiAgQElucHV0KClcbiAgbmd4U2Nyb2xsVG9EdXJhdGlvbjogbnVtYmVyID0gREVGQVVMVFMuZHVyYXRpb247XG5cbiAgQElucHV0KClcbiAgbmd4U2Nyb2xsVG9FYXNpbmc6IFNjcm9sbFRvQW5pbWF0aW9uRWFzaW5nID0gREVGQVVMVFMuZWFzaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG5neFNjcm9sbFRvT2Zmc2V0OiBudW1iZXIgPSBERUZBVUxUUy5vZmZzZXQ7XG5cbiAgQElucHV0KClcbiAgbmd4U2Nyb2xsVG9PZmZzZXRNYXA6IFNjcm9sbFRvT2Zmc2V0TWFwID0gREVGQVVMVFMub2Zmc2V0TWFwO1xuXG4gIHByaXZhdGUgb3B0aW9uczogU2Nyb2xsVG9Db25maWdPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNjcm9sbFRvU2VydmljZTogU2Nyb2xsVG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmd1bGFyIExpZmVjeWNsZSBIb29rIC0gQWZ0ZXIgVmlldyBJbml0XG4gICAqXG4gICAqIEB0b2RvIEltcGxlbWVudCBTdWJzY3JpcHRpb24gZm9yIEV2ZW50c1xuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICAvLyBUZXN0IEV2ZW50IFN1cHBvcnRcbiAgICBpZiAoRVZFTlRTLmluZGV4T2YodGhpcy5uZ3hTY3JvbGxUb0V2ZW50KSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgRXZlbnQgJyR7dGhpcy5uZ3hTY3JvbGxUb0V2ZW50fSdgKTtcbiAgICB9XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHRoZSB0cmlnZ2VyLi4uXG4gICAgdGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLm5neFNjcm9sbFRvRXZlbnQsXG4gICAgICAoZXZlbnQ6IEV2ZW50KSA9PiB7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgIHRhcmdldDogdGhpcy5uZ3hTY3JvbGxUbyxcbiAgICAgICAgICBkdXJhdGlvbjogdGhpcy5uZ3hTY3JvbGxUb0R1cmF0aW9uLFxuICAgICAgICAgIGVhc2luZzogdGhpcy5uZ3hTY3JvbGxUb0Vhc2luZyxcbiAgICAgICAgICBvZmZzZXQ6IHRoaXMubmd4U2Nyb2xsVG9PZmZzZXQsXG4gICAgICAgICAgb2Zmc2V0TWFwOiB0aGlzLm5neFNjcm9sbFRvT2Zmc2V0TWFwXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zY3JvbGxUb1NlcnZpY2Uuc2Nyb2xsVG8odGhpcy5vcHRpb25zKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=