UNPKG

@q149/angular-scrollspy

Version:

A simple lightweight library for Angular which automatically updates links to indicate the currently active section in the viewport

115 lines (114 loc) 6.46 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Directive, Input, HostBinding, ChangeDetectorRef } from '@angular/core'; /** * A directive used to add an `active` class to a nav item * when the section is in the viewport * * \@example * ```html * <a snScrollSpyItem for="foo" href="#section1">Section 1</a> * ``` * */ export class ScrollSpyItemDirective { /** * Creates an instance of ScrollSpyItemDirective. * \@memberof ScrollSpyItemDirective * @param {?} cdRef */ constructor(cdRef) { this.cdRef = cdRef; /** * True if the nav item is the active item in the `items` list * for `ScrollSpyDirective` instance * * \@memberof ScrollSpyItemDirective */ this.active = false; /** * If true means the section is in the viewport * * \@memberof ScrollSpyItemDirective */ this.inViewport = false; } /** * Id of section that links navigates to * * \@readonly * \@memberof ScrollSpyItemDirective * @return {?} */ get section() { return this.href.replace('#', ''); } /** * Manually trigger change detection * * \@memberof ScrollSpyItemDirective * @return {?} */ detectChanges() { this.cdRef.detectChanges(); } } ScrollSpyItemDirective.decorators = [ { type: Directive, args: [{ selector: '[snScrollSpyItem]' },] }, ]; /** @nocollapse */ ScrollSpyItemDirective.ctorParameters = () => [ { type: ChangeDetectorRef, }, ]; ScrollSpyItemDirective.propDecorators = { "active": [{ type: HostBinding, args: ['class.active',] },], "for": [{ type: Input },], "href": [{ type: Input },], }; function ScrollSpyItemDirective_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ScrollSpyItemDirective.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ScrollSpyItemDirective.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ScrollSpyItemDirective.propDecorators; /** * True if the nav item is the active item in the `items` list * for `ScrollSpyDirective` instance * * \@memberof ScrollSpyItemDirective * @type {?} */ ScrollSpyItemDirective.prototype.active; /** * ID of `ScrollSpyDirective` instance * * \@memberof ScrollSpyItemDirective * @type {?} */ ScrollSpyItemDirective.prototype.for; /** * Hash for section to link to * * \@memberof ScrollSpyItemDirective * @type {?} */ ScrollSpyItemDirective.prototype.href; /** * If true means the section is in the viewport * * \@memberof ScrollSpyItemDirective * @type {?} */ ScrollSpyItemDirective.prototype.inViewport; /** @type {?} */ ScrollSpyItemDirective.prototype.cdRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BxMTQ5L2FuZ3VsYXItc2Nyb2xsc3B5LyIsInNvdXJjZXMiOlsiYXBwL3Njcm9sbC1zcHkvc2Nyb2xsLXNweS1pdGVtL3Njcm9sbC1zcHktaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZXZCLE1BQU07Ozs7OztJQXVDSixZQUFvQixLQUF3QjtRQUF4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjs7Ozs7OztzQkFoQ0MsS0FBSzs7Ozs7OzBCQWtCOUIsS0FBSztLQWN1Qjs7Ozs7Ozs7UUFQckMsT0FBTztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7OztJQVk3QixhQUFhO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Ozs7WUFqRDlCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2FBQzlCOzs7O1lBZkMsaUJBQWlCOzs7dUJBdUJoQixXQUFXLFNBQUMsY0FBYztvQkFNMUIsS0FBSztxQkFNTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5wdXQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBBIGRpcmVjdGl2ZSB1c2VkIHRvIGFkZCBhbiBgYWN0aXZlYCBjbGFzcyB0byBhIG5hdiBpdGVtXHJcbiAqIHdoZW4gdGhlIHNlY3Rpb24gaXMgaW4gdGhlIHZpZXdwb3J0XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPGEgc25TY3JvbGxTcHlJdGVtIGZvcj1cImZvb1wiIGhyZWY9XCIjc2VjdGlvbjFcIj5TZWN0aW9uIDE8L2E+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbc25TY3JvbGxTcHlJdGVtXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmUge1xyXG4gIC8qKlxyXG4gICAqIFRydWUgaWYgdGhlIG5hdiBpdGVtIGlzIHRoZSBhY3RpdmUgaXRlbSBpbiB0aGUgYGl0ZW1zYCBsaXN0XHJcbiAgICogZm9yIGBTY3JvbGxTcHlEaXJlY3RpdmVgIGluc3RhbmNlXHJcbiAgICpcclxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZVxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJykgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIElEIG9mIGBTY3JvbGxTcHlEaXJlY3RpdmVgIGluc3RhbmNlXHJcbiAgICpcclxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3I6IHN0cmluZztcclxuICAvKipcclxuICAgKiBIYXNoIGZvciBzZWN0aW9uIHRvIGxpbmsgdG9cclxuICAgKlxyXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGhyZWY6IHN0cmluZztcclxuICAvKipcclxuICAgKiBJZiB0cnVlIG1lYW5zIHRoZSBzZWN0aW9uIGlzIGluIHRoZSB2aWV3cG9ydFxyXG4gICAqXHJcbiAgICogQG1lbWJlcm9mIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmVcclxuICAgKi9cclxuICBwdWJsaWMgaW5WaWV3cG9ydCA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIElkIG9mIHNlY3Rpb24gdGhhdCBsaW5rcyBuYXZpZ2F0ZXMgdG9cclxuICAgKlxyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBzZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ocmVmLnJlcGxhY2UoJyMnLCAnJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZS5cclxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG4gIC8qKlxyXG4gICAqIE1hbnVhbGx5IHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxyXG4gICAqXHJcbiAgICogQG1lbWJlcm9mIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmVcclxuICAgKi9cclxuICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iXX0=