ngx-tags
Version:
To install this library, run:
72 lines • 4.75 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Input, ElementRef } from '@angular/core';
/* tslint:disable:directive-selector */
export class InViewDirective {
/**
* @param {?} el
*/
constructor(el) {
this.el = el;
this.dropdown = this.el.nativeElement.closest('.dropdown');
}
/**
* @param {?} values
* @return {?}
*/
ngOnChanges(values) {
if (values.InView.currentValue) {
this.setInView();
}
}
/**
* @return {?}
*/
setInView() {
/** @type {?} */
const dropdown = this.el.nativeElement.closest('.dropdown');
/** @type {?} */
const currentPos = this.el.nativeElement.offsetTop;
/** @type {?} */
const dropdownScrollPos = dropdown.scrollTop;
/** @type {?} */
const dropdownHeight = dropdown.offsetHeight;
/** @type {?} */
const elHeight = this.el.nativeElement.offsetHeight;
if ((currentPos + elHeight) > (dropdownScrollPos + dropdownHeight)) {
dropdown.scrollTop = currentPos;
}
else if (dropdownScrollPos > currentPos) {
dropdown.scrollTop = currentPos;
}
}
}
InViewDirective.decorators = [
{ type: Directive, args: [{
selector: '[InView]'
},] }
];
/** @nocollapse */
InViewDirective.ctorParameters = () => [
{ type: ElementRef }
];
InViewDirective.propDecorators = {
InView: [{ type: Input }]
};
if (false) {
/** @type {?} */
InViewDirective.prototype.InView;
/**
* @type {?}
* @private
*/
InViewDirective.prototype.dropdown;
/**
* @type {?}
* @private
*/
InViewDirective.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tdmlldy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGFncy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2luLXZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBTXhFLE1BQU0sT0FBTyxlQUFlOzs7O0lBSTFCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRjFCLGFBQVEsR0FBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXJDLENBQUM7Ozs7O0lBRXZDLFdBQVcsQ0FBQyxNQUFNO1FBQ2hCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7OztJQUVELFNBQVM7O2NBQ0QsUUFBUSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDOztjQUNsRSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUzs7Y0FDNUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLFNBQVM7O2NBQ3RDLGNBQWMsR0FBRyxRQUFRLENBQUMsWUFBWTs7Y0FDdEMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVk7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxFQUFFO1lBQ2xFLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1NBQ2pDO2FBQU0sSUFBSSxpQkFBaUIsR0FBRyxVQUFVLEVBQUU7WUFDekMsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7WUExQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2FBQ3JCOzs7O1lBTDBCLFVBQVU7OztxQkFPbEMsS0FBSzs7OztJQUFOLGlDQUFnQjs7Ozs7SUFDaEIsbUNBQTJFOzs7OztJQUUvRCw2QkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyogdHNsaW50OmRpc2FibGU6ZGlyZWN0aXZlLXNlbGVjdG9yICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbSW5WaWV3XSdcbn0pXG5leHBvcnQgY2xhc3MgSW5WaWV3RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgSW5WaWV3O1xuICBwcml2YXRlIGRyb3Bkb3duOiBIVE1MRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuZHJvcGRvd24nKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICBuZ09uQ2hhbmdlcyh2YWx1ZXMpIHtcbiAgICBpZiAodmFsdWVzLkluVmlldy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0SW5WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0SW5WaWV3KCkge1xuICAgIGNvbnN0IGRyb3Bkb3duOiBIVE1MRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuZHJvcGRvd24nKTtcbiAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICBjb25zdCBkcm9wZG93blNjcm9sbFBvcyA9IGRyb3Bkb3duLnNjcm9sbFRvcDtcbiAgICBjb25zdCBkcm9wZG93bkhlaWdodCA9IGRyb3Bkb3duLm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBlbEhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgaWYgKChjdXJyZW50UG9zICsgZWxIZWlnaHQpID4gKGRyb3Bkb3duU2Nyb2xsUG9zICsgZHJvcGRvd25IZWlnaHQpKSB7XG4gICAgICBkcm9wZG93bi5zY3JvbGxUb3AgPSBjdXJyZW50UG9zO1xuICAgIH0gZWxzZSBpZiAoZHJvcGRvd25TY3JvbGxQb3MgPiBjdXJyZW50UG9zKSB7XG4gICAgICBkcm9wZG93bi5zY3JvbGxUb3AgPSBjdXJyZW50UG9zO1xuICAgIH1cbiAgfVxufVxuIl19