@hxui/angular
Version:
* * *
43 lines • 4.13 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Injectable, ElementRef } from '@angular/core';
import { positionElements } from './ng-positioning';
export class PositioningService {
/**
* @param {?} options
* @return {?}
*/
position(options) {
const { element, target, attachment, appendToBody } = options;
positionElements(this._getHtmlElement(target), this._getHtmlElement(element), (/** @type {?} */ (attachment)), appendToBody);
}
/**
* @param {?} element
* @return {?}
*/
isElementBelowTheFold(element) {
/** @type {?} */
const rect = element.getBoundingClientRect();
return ((rect.top + rect.height) > document.body.clientHeight);
}
/**
* @param {?} element
* @return {?}
*/
_getHtmlElement(element) {
// it means that we got a selector
if (typeof element === 'string') {
return (/** @type {?} */ (document.querySelector(element)));
}
if (element instanceof ElementRef) {
return element.nativeElement;
}
return (/** @type {?} */ (element));
}
}
PositioningService.decorators = [
{ type: Injectable },
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb25pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoeHVpL2FuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcG9zaXRpb25pbmcvcG9zaXRpb25pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFLcEQsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7SUFDdEIsUUFBUSxDQUFDLE9BQTJCO2NBQ25DLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFDLEdBQUcsT0FBTztRQUMzRCxnQkFBZ0IsQ0FDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUM3QixtQkFBSyxVQUFVLEVBQUEsRUFDZixZQUFZLENBQUMsQ0FBQztJQUNsQixDQUFDOzs7OztJQUVNLHFCQUFxQixDQUFDLE9BQW9COztjQUN6QyxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFO1FBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUU7SUFDbEUsQ0FBQzs7Ozs7SUFFTyxlQUFlLENBQUMsT0FBWTtRQUNsQyxrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsT0FBTyxtQkFBQSxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFlLENBQUM7U0FDdkQ7UUFFRCxJQUFJLE9BQU8sWUFBWSxVQUFVLEVBQUU7WUFDakMsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDO1NBQzlCO1FBRUQsT0FBTyxtQkFBQSxPQUFPLEVBQWUsQ0FBQztJQUNoQyxDQUFDOzs7WUEzQkYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcG9zaXRpb25FbGVtZW50cyB9IGZyb20gJy4vbmctcG9zaXRpb25pbmcnO1xyXG5pbXBvcnQge1Bvc2l0aW9uaW5nT3B0aW9uc30gZnJvbSAnLi9wb3NpdGlvbmluZy5vcHRpb25zJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmluZ1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBwb3NpdGlvbihvcHRpb25zOiBQb3NpdGlvbmluZ09wdGlvbnMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHtlbGVtZW50LCB0YXJnZXQsIGF0dGFjaG1lbnQsIGFwcGVuZFRvQm9keX0gPSBvcHRpb25zO1xyXG4gICAgcG9zaXRpb25FbGVtZW50cyhcclxuICAgICAgdGhpcy5fZ2V0SHRtbEVsZW1lbnQodGFyZ2V0KSxcclxuICAgICAgdGhpcy5fZ2V0SHRtbEVsZW1lbnQoZWxlbWVudCksXHJcbiAgICAgIDxhbnk+YXR0YWNobWVudCxcclxuICAgICAgYXBwZW5kVG9Cb2R5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0VsZW1lbnRCZWxvd1RoZUZvbGQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgcmV0dXJuICgocmVjdC50b3AgKyByZWN0LmhlaWdodCkgPiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0SHRtbEVsZW1lbnQoZWxlbWVudDogYW55KTogSFRNTEVsZW1lbnQge1xyXG4gICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBnb3QgYSBzZWxlY3RvclxyXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50KSBhcyBIVE1MRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYpIHtcclxuICAgICAgcmV0dXJuIGVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICB9XHJcbn1cclxuIl19