UNPKG

@thisissoon/angular-scrollspy

Version:

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

108 lines 5.96 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 }] }; if (false) { /** * 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 {?} * @private */ ScrollSpyItemDirective.prototype.cdRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0aGlzaXNzb29uL2FuZ3VsYXItc2Nyb2xsc3B5LyIsInNvdXJjZXMiOlsiYXBwL3Njcm9sbC1zcHkvc2Nyb2xsLXNweS1pdGVtL3Njcm9sbC1zcHktaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZXZCLE1BQU0sT0FBTyxzQkFBc0I7Ozs7OztJQTBDakMsWUFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7Ozs7Ozs7UUFsQ3JDLFdBQU0sR0FBRyxLQUFLLENBQUM7Ozs7OztRQW9CZixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBY3FCLENBQUM7Ozs7Ozs7O0lBUGhELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7Ozs7O0lBV00sYUFBYTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OztZQXJERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjthQUM5Qjs7OztZQWZDLGlCQUFpQjs7O3FCQXVCaEIsV0FBVyxTQUFDLGNBQWM7a0JBTzFCLEtBQUs7bUJBT0wsS0FBSzs7Ozs7Ozs7OztJQWROLHdDQUNzQjs7Ozs7OztJQU10QixxQ0FDbUI7Ozs7Ozs7SUFNbkIsc0NBQ29COzs7Ozs7O0lBTXBCLDRDQUEwQjs7Ozs7SUFjZCx1Q0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBIb3N0QmluZGluZyxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHVzZWQgdG8gYWRkIGFuIGBhY3RpdmVgIGNsYXNzIHRvIGEgbmF2IGl0ZW1cbiAqIHdoZW4gdGhlIHNlY3Rpb24gaXMgaW4gdGhlIHZpZXdwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhIHNuU2Nyb2xsU3B5SXRlbSBmb3I9XCJmb29cIiBocmVmPVwiI3NlY3Rpb24xXCI+U2VjdGlvbiAxPC9hPlxuICogYGBgXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc25TY3JvbGxTcHlJdGVtXScsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmUge1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgbmF2IGl0ZW0gaXMgdGhlIGFjdGl2ZSBpdGVtIGluIHRoZSBgaXRlbXNgIGxpc3RcbiAgICogZm9yIGBTY3JvbGxTcHlEaXJlY3RpdmVgIGluc3RhbmNlXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIHB1YmxpYyBhY3RpdmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElEIG9mIGBTY3JvbGxTcHlEaXJlY3RpdmVgIGluc3RhbmNlXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIYXNoIGZvciBzZWN0aW9uIHRvIGxpbmsgdG9cbiAgICpcbiAgICogQG1lbWJlcm9mIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBocmVmOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiB0cnVlIG1lYW5zIHRoZSBzZWN0aW9uIGlzIGluIHRoZSB2aWV3cG9ydFxuICAgKlxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZVxuICAgKi9cbiAgcHVibGljIGluVmlld3BvcnQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElkIG9mIHNlY3Rpb24gdGhhdCBsaW5rcyBuYXZpZ2F0ZXMgdG9cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmLnJlcGxhY2UoJyMnLCAnJyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZS5cbiAgICogQG1lbWJlcm9mIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICAvKipcbiAgICogTWFudWFsbHkgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19