@thisissoon/angular-scrollspy
Version:
A simple lightweight library for Angular which automatically updates links to indicate the currently active section in the viewport
130 lines • 6.84 kB
JavaScript
/**
* @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>
* ```
*
*/
var ScrollSpyItemDirective = /** @class */ (function () {
/**
* Creates an instance of ScrollSpyItemDirective.
* @memberof ScrollSpyItemDirective
*/
function ScrollSpyItemDirective(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;
}
Object.defineProperty(ScrollSpyItemDirective.prototype, "section", {
/**
* Id of section that links navigates to
*
* @readonly
* @memberof ScrollSpyItemDirective
*/
get: /**
* Id of section that links navigates to
*
* \@readonly
* \@memberof ScrollSpyItemDirective
* @return {?}
*/
function () {
return this.href.replace('#', '');
},
enumerable: true,
configurable: true
});
/**
* Manually trigger change detection
*
* @memberof ScrollSpyItemDirective
*/
/**
* Manually trigger change detection
*
* \@memberof ScrollSpyItemDirective
* @return {?}
*/
ScrollSpyItemDirective.prototype.detectChanges = /**
* Manually trigger change detection
*
* \@memberof ScrollSpyItemDirective
* @return {?}
*/
function () {
this.cdRef.detectChanges();
};
ScrollSpyItemDirective.decorators = [
{ type: Directive, args: [{
selector: '[snScrollSpyItem]',
},] }
];
/** @nocollapse */
ScrollSpyItemDirective.ctorParameters = function () { return [
{ type: ChangeDetectorRef }
]; };
ScrollSpyItemDirective.propDecorators = {
active: [{ type: HostBinding, args: ['class.active',] }],
for: [{ type: Input }],
href: [{ type: Input }]
};
return ScrollSpyItemDirective;
}());
export { ScrollSpyItemDirective };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0aGlzaXNzb29uL2FuZ3VsYXItc2Nyb2xsc3B5LyIsInNvdXJjZXMiOlsiYXBwL3Njcm9sbC1zcHkvc2Nyb2xsLXNweS1pdGVtL3Njcm9sbC1zcHktaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBWXZCO0lBeUNFOzs7T0FHRztJQUNILGdDQUFvQixLQUF3QjtRQUF4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjs7Ozs7OztRQWxDckMsV0FBTSxHQUFHLEtBQUssQ0FBQzs7Ozs7O1FBb0JmLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFjcUIsQ0FBQztJQVBoRCxzQkFBVywyQ0FBTztRQU5sQjs7Ozs7V0FLRzs7Ozs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7OztPQUFBO0lBTUQ7Ozs7T0FJRzs7Ozs7OztJQUNJLDhDQUFhOzs7Ozs7SUFBcEI7UUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7O2dCQXJERixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7Ozs7Z0JBZkMsaUJBQWlCOzs7eUJBdUJoQixXQUFXLFNBQUMsY0FBYztzQkFPMUIsS0FBSzt1QkFPTCxLQUFLOztJQThCUiw2QkFBQztDQUFBLEFBdERELElBc0RDO1NBbkRZLHNCQUFzQjs7Ozs7Ozs7O0lBT2pDLHdDQUNzQjs7Ozs7OztJQU10QixxQ0FDbUI7Ozs7Ozs7SUFNbkIsc0NBQ29COzs7Ozs7O0lBTXBCLDRDQUEwQjs7Ozs7SUFjZCx1Q0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBIb3N0QmluZGluZyxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHVzZWQgdG8gYWRkIGFuIGBhY3RpdmVgIGNsYXNzIHRvIGEgbmF2IGl0ZW1cbiAqIHdoZW4gdGhlIHNlY3Rpb24gaXMgaW4gdGhlIHZpZXdwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhIHNuU2Nyb2xsU3B5SXRlbSBmb3I9XCJmb29cIiBocmVmPVwiI3NlY3Rpb24xXCI+U2VjdGlvbiAxPC9hPlxuICogYGBgXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc25TY3JvbGxTcHlJdGVtXScsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmUge1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgbmF2IGl0ZW0gaXMgdGhlIGFjdGl2ZSBpdGVtIGluIHRoZSBgaXRlbXNgIGxpc3RcbiAgICogZm9yIGBTY3JvbGxTcHlEaXJlY3RpdmVgIGluc3RhbmNlXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIHB1YmxpYyBhY3RpdmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElEIG9mIGBTY3JvbGxTcHlEaXJlY3RpdmVgIGluc3RhbmNlXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIYXNoIGZvciBzZWN0aW9uIHRvIGxpbmsgdG9cbiAgICpcbiAgICogQG1lbWJlcm9mIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBocmVmOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiB0cnVlIG1lYW5zIHRoZSBzZWN0aW9uIGlzIGluIHRoZSB2aWV3cG9ydFxuICAgKlxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZVxuICAgKi9cbiAgcHVibGljIGluVmlld3BvcnQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElkIG9mIHNlY3Rpb24gdGhhdCBsaW5rcyBuYXZpZ2F0ZXMgdG9cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmLnJlcGxhY2UoJyMnLCAnJyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU2Nyb2xsU3B5SXRlbURpcmVjdGl2ZS5cbiAgICogQG1lbWJlcm9mIFNjcm9sbFNweUl0ZW1EaXJlY3RpdmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICAvKipcbiAgICogTWFudWFsbHkgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlJdGVtRGlyZWN0aXZlXG4gICAqL1xuICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19