UNPKG

fundamental-ngx

Version:

SAP Fiori Fundamentals, implemented in Angular

92 lines 7.02 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core'; var ScrollSpyDirective = /** @class */ (function () { function ScrollSpyDirective(elRef) { this.elRef = elRef; this.trackedTags = []; this.fireEmpty = false; this.targetPercent = 0; this.spyChange = new EventEmitter(); } /** * @param {?} event * @return {?} */ ScrollSpyDirective.prototype.onScroll = /** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var spiedTag; /** @type {?} */ var children = this.elRef.nativeElement.children; /** @type {?} */ var targetScrollTop = event.target.scrollTop; /** @type {?} */ var targetOffsetTop = event.target.offsetTop; var _loop_1 = function (i) { /** @type {?} */ var element = children[i]; if (this_1.trackedTags.some((/** * @param {?} tag * @return {?} */ function (tag) { return tag.toLocaleUpperCase() === element.tagName.toLocaleUpperCase(); }))) { if ((element.offsetTop - targetOffsetTop) <= targetScrollTop + event.target.offsetHeight * this_1.targetPercent) { spiedTag = element; } } }; var this_1 = this; for (var i = 0; i < children.length; i++) { _loop_1(i); } if ((spiedTag || this.fireEmpty) && spiedTag !== this.currentActive) { this.currentActive = spiedTag; this.spyChange.emit(this.currentActive); } }; ScrollSpyDirective.decorators = [ { type: Directive, args: [{ selector: '[fdScrollSpy]' },] } ]; /** @nocollapse */ ScrollSpyDirective.ctorParameters = function () { return [ { type: ElementRef } ]; }; ScrollSpyDirective.propDecorators = { trackedTags: [{ type: Input }], fireEmpty: [{ type: Input }], targetPercent: [{ type: Input }], spyChange: [{ type: Output }], onScroll: [{ type: HostListener, args: ['scroll', ['$event'],] }] }; return ScrollSpyDirective; }()); export { ScrollSpyDirective }; if (false) { /** @type {?} */ ScrollSpyDirective.prototype.trackedTags; /** @type {?} */ ScrollSpyDirective.prototype.fireEmpty; /** @type {?} */ ScrollSpyDirective.prototype.targetPercent; /** @type {?} */ ScrollSpyDirective.prototype.spyChange; /** * @type {?} * @private */ ScrollSpyDirective.prototype.currentActive; /** * @type {?} * @private */ ScrollSpyDirective.prototype.elRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mdW5kYW1lbnRhbC1uZ3gvIiwic291cmNlcyI6WyJsaWIvc2Nyb2xsLXNweS9zY3JvbGwtc3B5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHO0lBbUJJLDRCQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBYjlCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBRzNCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0Isa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFHMUIsY0FBUyxHQUE4QixJQUFJLFlBQVksRUFBZSxDQUFDO0lBSXRDLENBQUM7Ozs7O0lBR3pDLHFDQUFROzs7O0lBRFIsVUFDUyxLQUFVOztZQUNYLFFBQXFCOztZQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUTs7WUFDNUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUzs7WUFDeEMsZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUztnQ0FFckMsQ0FBQzs7Z0JBQ0EsT0FBTyxHQUFnQixRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksT0FBSyxXQUFXLENBQUMsSUFBSTs7OztZQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUEvRCxDQUErRCxFQUFDLEVBQUU7Z0JBQy9GLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxPQUFLLGFBQWEsRUFBRTtvQkFDM0csUUFBUSxHQUFHLE9BQU8sQ0FBQztpQkFDdEI7YUFDSjtRQUNMLENBQUM7O1FBUEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUEvQixDQUFDO1NBT1Q7UUFFRCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNqRSxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDOztnQkF6Q0osU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO2lCQUM1Qjs7OztnQkFKbUIsVUFBVTs7OzhCQU96QixLQUFLOzRCQUdMLEtBQUs7Z0NBR0wsS0FBSzs0QkFHTCxNQUFNOzJCQU9OLFlBQVksU0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0lBc0J0Qyx5QkFBQztDQUFBLEFBM0NELElBMkNDO1NBeENZLGtCQUFrQjs7O0lBRTNCLHlDQUNrQzs7SUFFbEMsdUNBQ2tDOztJQUVsQywyQ0FDaUM7O0lBRWpDLHVDQUM4RTs7Ozs7SUFFOUUsMkNBQW1DOzs7OztJQUV2QixtQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkU2Nyb2xsU3B5XSdcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsU3B5RGlyZWN0aXZlIHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRyYWNrZWRUYWdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlyZUVtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YXJnZXRQZXJjZW50OiBudW1iZXIgPSAwO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNweUNoYW5nZTogRXZlbnRFbWl0dGVyPEhUTUxFbGVtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRBY3RpdmU6IEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pXG4gICAgb25TY3JvbGwoZXZlbnQ6IGFueSkge1xuICAgICAgICBsZXQgc3BpZWRUYWc6IEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgdGFyZ2V0U2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0VG9wID0gZXZlbnQudGFyZ2V0Lm9mZnNldFRvcDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tlZFRhZ3Muc29tZSh0YWcgPT4gdGFnLnRvTG9jYWxlVXBwZXJDYXNlKCkgPT09IGVsZW1lbnQudGFnTmFtZS50b0xvY2FsZVVwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgIGlmICgoZWxlbWVudC5vZmZzZXRUb3AgLSB0YXJnZXRPZmZzZXRUb3ApIDw9IHRhcmdldFNjcm9sbFRvcCArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQgKiB0aGlzLnRhcmdldFBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3BpZWRUYWcgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoc3BpZWRUYWcgfHwgdGhpcy5maXJlRW1wdHkpICYmIHNwaWVkVGFnICE9PSB0aGlzLmN1cnJlbnRBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZSA9IHNwaWVkVGFnO1xuICAgICAgICAgICAgdGhpcy5zcHlDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRBY3RpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=