UNPKG

materialize-angular

Version:
114 lines 9.72 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/scroll-spy/scroll-spy.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Workylab. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://raw.githubusercontent.com/workylab/materialize-angular/master/LICENSE */ import { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core'; import { config } from '../../config'; import { getOffseTop } from '../../utils/get-offset-top.util'; import { ScrollSpyItemComponent } from './scroll-spy-item/scroll-spy-item.component'; import { windowScrollPosition } from '../../utils/window-scroll-position.util'; var ScrollSpyComponent = /** @class */ (function () { function ScrollSpyComponent() { this.className = ScrollSpyComponent.defaultProps.className; this.itemId = ScrollSpyComponent.defaultProps.itemId; this.onChangeEmitter = new EventEmitter(); this.onScroll = this.onScroll.bind(this); this.validateScroll = this.validateScroll.bind(this); window.addEventListener('scroll', this.onScroll); } /** * @return {?} */ ScrollSpyComponent.prototype.ngAfterContentInit = /** * @return {?} */ function () { this.onScroll(); }; /** * @return {?} */ ScrollSpyComponent.prototype.onScroll = /** * @return {?} */ function () { setTimeout(this.validateScroll, 100); }; /** * @return {?} */ ScrollSpyComponent.prototype.validateScroll = /** * @return {?} */ function () { /** @type {?} */ var item = this.getCurrentItem(); if (this.itemId !== item.id) { this.itemId = item.id; this.onChangeEmitter.emit(this.itemId); } }; /** * @return {?} */ ScrollSpyComponent.prototype.getCurrentItem = /** * @return {?} */ function () { /** @type {?} */ var items = this.items.toArray(); for (var i = 0; i < items.length; i++) { /** @type {?} */ var elementOffsetTop = getOffseTop(items[i].element.nativeElement); if (elementOffsetTop > windowScrollPosition()) { /** @type {?} */ var prevItem = items[i - 1] ? items[i - 1] : items[0]; return prevItem; } } return items[items.length - 1]; }; ScrollSpyComponent.defaultProps = { className: '', itemId: '' }; ScrollSpyComponent.decorators = [ { type: Component, args: [{ selector: config.components.prefix + "-scroll-spy", template: "<div [ngClass]=\"className\">\n <ng-content select=\"materialize-scroll-spy-item\"></ng-content>\n</div>\n" }] } ]; /** @nocollapse */ ScrollSpyComponent.ctorParameters = function () { return []; }; ScrollSpyComponent.propDecorators = { items: [{ type: ContentChildren, args: [ScrollSpyItemComponent,] }], onChangeEmitter: [{ type: Output, args: ['onChange',] }], className: [{ type: Input }], itemId: [{ type: Input }] }; return ScrollSpyComponent; }()); export { ScrollSpyComponent }; if (false) { /** @type {?} */ ScrollSpyComponent.defaultProps; /** @type {?} */ ScrollSpyComponent.prototype.items; /** @type {?} */ ScrollSpyComponent.prototype.onChangeEmitter; /** @type {?} */ ScrollSpyComponent.prototype.className; /** @type {?} */ ScrollSpyComponent.prototype.itemId; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXRlcmlhbGl6ZS1hbmd1bGFyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBsZXRlZC1jb21wb25lbnRzL3Njcm9sbC1zcHkvc2Nyb2xsLXNweS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUvRTtJQWlCRTtRQUhTLGNBQVMsR0FBVyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzlELFdBQU0sR0FBVyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBRy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7OztJQUVELCtDQUFrQjs7O0lBQWxCO1FBQ0UsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7Ozs7SUFFRCxxQ0FBUTs7O0lBQVI7UUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7O0lBRUQsMkNBQWM7OztJQUFkOztZQUNRLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFO1FBRWxDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDOzs7O0lBRUQsMkNBQWM7OztJQUFkOztZQUNRLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtRQUVsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7Z0JBQy9CLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUVwRSxJQUFJLGdCQUFnQixHQUFHLG9CQUFvQixFQUFFLEVBQUU7O29CQUN2QyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDZCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFWixPQUFPLFFBQVEsQ0FBQzthQUNqQjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBdERlLCtCQUFZLEdBQW1CO1FBQzdDLFNBQVMsRUFBRSxFQUFFO1FBQ2IsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDOztnQkFSSCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxnQkFBYztvQkFDcEQsdUhBQTBDO2lCQUMzQzs7Ozs7d0JBT0UsZUFBZSxTQUFDLHNCQUFzQjtrQ0FFdEMsTUFBTSxTQUFDLFVBQVU7NEJBRWpCLEtBQUs7eUJBQ0wsS0FBSzs7SUE2Q1IseUJBQUM7Q0FBQSxBQTVERCxJQTREQztTQXhEWSxrQkFBa0I7OztJQUM3QixnQ0FHRTs7SUFFRixtQ0FBa0Y7O0lBRWxGLDZDQUEwRDs7SUFFMUQsdUNBQXVFOztJQUN2RSxvQ0FBaUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgV29ya3lsYWIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dvcmt5bGFiL21hdGVyaWFsaXplLWFuZ3VsYXIvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBnZXRPZmZzZVRvcCB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1vZmZzZXQtdG9wLnV0aWwnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc2Nyb2xsLXNweS1pdGVtL3Njcm9sbC1zcHktaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5TW9kZWwgfSBmcm9tICcuL3Njcm9sbC1zcHkubW9kZWwnO1xuaW1wb3J0IHsgd2luZG93U2Nyb2xsUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy93aW5kb3ctc2Nyb2xsLXBvc2l0aW9uLnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IGAkeyBjb25maWcuY29tcG9uZW50cy5wcmVmaXggfS1zY3JvbGwtc3B5YCxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbC1zcHkuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNweUNvbXBvbmVudCBpbXBsZW1lbnRzIFNjcm9sbFNweU1vZGVsLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRQcm9wczogU2Nyb2xsU3B5TW9kZWwgPSB7XG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBpdGVtSWQ6ICcnXG4gIH07XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTY3JvbGxTcHlJdGVtQ29tcG9uZW50KSBpdGVtczogUXVlcnlMaXN0PFNjcm9sbFNweUl0ZW1Db21wb25lbnQ+O1xuXG4gIEBPdXRwdXQoJ29uQ2hhbmdlJykgb25DaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IFNjcm9sbFNweUNvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2xhc3NOYW1lO1xuICBASW5wdXQoKSBpdGVtSWQ6IHN0cmluZyA9IFNjcm9sbFNweUNvbXBvbmVudC5kZWZhdWx0UHJvcHMuaXRlbUlkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMub25DaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICB0aGlzLm9uU2Nyb2xsID0gdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudmFsaWRhdGVTY3JvbGwgPSB0aGlzLnZhbGlkYXRlU2Nyb2xsLmJpbmQodGhpcyk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5vblNjcm9sbCgpO1xuICB9XG5cbiAgb25TY3JvbGwoKSB7XG4gICAgc2V0VGltZW91dCh0aGlzLnZhbGlkYXRlU2Nyb2xsLCAxMDApO1xuICB9XG5cbiAgdmFsaWRhdGVTY3JvbGwoKSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0Q3VycmVudEl0ZW0oKTtcblxuICAgIGlmICh0aGlzLml0ZW1JZCAhPT0gaXRlbS5pZCkge1xuICAgICAgdGhpcy5pdGVtSWQgPSBpdGVtLmlkO1xuICAgICAgdGhpcy5vbkNoYW5nZUVtaXR0ZXIuZW1pdCh0aGlzLml0ZW1JZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q3VycmVudEl0ZW0oKTogU2Nyb2xsU3B5SXRlbUNvbXBvbmVudCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRPZmZzZXRUb3AgPSBnZXRPZmZzZVRvcChpdGVtc1tpXS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICBpZiAoZWxlbWVudE9mZnNldFRvcCA+IHdpbmRvd1Njcm9sbFBvc2l0aW9uKCkpIHtcbiAgICAgICAgY29uc3QgcHJldkl0ZW0gPSBpdGVtc1tpIC0gMV1cbiAgICAgICAgICA/IGl0ZW1zW2kgLSAxXVxuICAgICAgICAgIDogaXRlbXNbMF07XG5cbiAgICAgICAgcmV0dXJuIHByZXZJdGVtO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXTtcbiAgfVxufVxuIl19