UNPKG

@thisissoon/angular-scrollspy

Version:

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

74 lines 4.97 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input } from '@angular/core'; import { ScrollSpyService } from '../scroll-spy-service/scroll-spy.service'; /** * A component to wrap section content within that will update the * `ScrollSpyService` when it's in view * * \@example * ```html * <sn-scroll-spy-section id="section1" for="foo"> * ... * </sn-scroll-spy-section> * ``` */ export class ScrollSpySectionComponent { /** * Creates an instance of ScrollSpySectionComponent. * \@memberof ScrollSpySectionComponent * @param {?} scrollSpySvc */ constructor(scrollSpySvc) { this.scrollSpySvc = scrollSpySvc; } /** * Updates `ScrollSpy` section when element enters/leaves viewport * * \@memberof ScrollSpySectionComponent * @param {?} inViewport * @return {?} */ onInViewportChange(inViewport) { this.scrollSpySvc.setSpySectionStatus(this.id, this.for, inViewport); } } ScrollSpySectionComponent.decorators = [ { type: Component, args: [{ selector: 'sn-scroll-spy-section', template: "<div\n class=\"sn-hidden\"\n snInViewport\n (inViewportChange)=\"onInViewportChange($event)\">\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:block;position:relative}.sn-hidden{bottom:0;left:0;opacity:0;position:absolute;right:0;top:0;z-index:-1}"] }] } ]; /** @nocollapse */ ScrollSpySectionComponent.ctorParameters = () => [ { type: ScrollSpyService } ]; ScrollSpySectionComponent.propDecorators = { id: [{ type: Input }], for: [{ type: Input }] }; if (false) { /** * Identifies the section * * \@memberof ScrollSpySectionComponent * @type {?} */ ScrollSpySectionComponent.prototype.id; /** * Specifies which `ScrollSpy` instance to update * * \@memberof ScrollSpySectionComponent * @type {?} */ ScrollSpySectionComponent.prototype.for; /** * @type {?} * @private */ ScrollSpySectionComponent.prototype.scrollSpySvc; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0aGlzaXNzb29uL2FuZ3VsYXItc2Nyb2xsc3B5LyIsInNvdXJjZXMiOlsiYXBwL3Njcm9sbC1zcHkvc2Nyb2xsLXNweS1zZWN0aW9uL3Njcm9sbC1zcHktc2VjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFrQjVFLE1BQU0sT0FBTyx5QkFBeUI7Ozs7OztJQW1CcEMsWUFBb0IsWUFBOEI7UUFBOUIsaUJBQVksR0FBWixZQUFZLENBQWtCO0lBQUcsQ0FBQzs7Ozs7Ozs7SUFNL0Msa0JBQWtCLENBQUMsVUFBbUI7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkUsQ0FBQzs7O1lBaENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxrSkFBa0Q7O2FBRW5EOzs7O1lBakJRLGdCQUFnQjs7O2lCQXdCdEIsS0FBSztrQkFPTCxLQUFLOzs7Ozs7Ozs7SUFQTix1Q0FDa0I7Ozs7Ozs7SUFNbEIsd0NBQ21COzs7OztJQUtQLGlEQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjcm9sbFNweVNlcnZpY2UgfSBmcm9tICcuLi9zY3JvbGwtc3B5LXNlcnZpY2Uvc2Nyb2xsLXNweS5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0byB3cmFwIHNlY3Rpb24gY29udGVudCB3aXRoaW4gdGhhdCB3aWxsIHVwZGF0ZSB0aGVcbiAqIGBTY3JvbGxTcHlTZXJ2aWNlYCB3aGVuIGl0J3MgaW4gdmlld1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiAgPHNuLXNjcm9sbC1zcHktc2VjdGlvbiBpZD1cInNlY3Rpb24xXCIgZm9yPVwiZm9vXCI+XG4gKiAgICAuLi5cbiAqICA8L3NuLXNjcm9sbC1zcHktc2VjdGlvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbi1zY3JvbGwtc3B5LXNlY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsLXNweS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsLXNweS1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNweVNlY3Rpb25Db21wb25lbnQge1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgc2VjdGlvblxuICAgKlxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5U2VjdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggYFNjcm9sbFNweWAgaW5zdGFuY2UgdG8gdXBkYXRlXG4gICAqXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlTZWN0aW9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNjcm9sbFNweVNlY3Rpb25Db21wb25lbnQuXG4gICAqIEBtZW1iZXJvZiBTY3JvbGxTcHlTZWN0aW9uQ29tcG9uZW50XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNjcm9sbFNweVN2YzogU2Nyb2xsU3B5U2VydmljZSkge31cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYFNjcm9sbFNweWAgc2VjdGlvbiB3aGVuIGVsZW1lbnQgZW50ZXJzL2xlYXZlcyB2aWV3cG9ydFxuICAgKlxuICAgKiBAbWVtYmVyb2YgU2Nyb2xsU3B5U2VjdGlvbkNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIG9uSW5WaWV3cG9ydENoYW5nZShpblZpZXdwb3J0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxTcHlTdmMuc2V0U3B5U2VjdGlvblN0YXR1cyh0aGlzLmlkLCB0aGlzLmZvciwgaW5WaWV3cG9ydCk7XG4gIH1cbn1cbiJdfQ==