fundamental-ngx
Version:
SAP Fiori Fundamentals, implemented in Angular
92 lines • 7.02 kB
JavaScript
/**
* @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=