@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
JavaScript
/**
* @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==