materialize-angular
Version:
Material UI Angular library
114 lines • 9.72 kB
JavaScript
/**
* @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