@hxui/angular
Version:
An Angular library based on the [HXUI design system](https://hxui.io).
29 lines • 4.24 kB
JavaScript
import { Injectable, ElementRef } from '@angular/core';
import { positionElements } from './ng-positioning';
import * as i0 from "@angular/core";
export class PositioningService {
position(options) {
const { element, target, attachment, appendToBody } = options;
positionElements(this._getHtmlElement(target), this._getHtmlElement(element), attachment, appendToBody);
}
isElementBelowTheFold(element) {
const rect = element.getBoundingClientRect();
return ((rect.top + rect.height) > document.body.clientHeight);
}
_getHtmlElement(element) {
// it means that we got a selector
if (typeof element === 'string') {
return document.querySelector(element);
}
if (element instanceof ElementRef) {
return element.nativeElement;
}
return element;
}
}
PositioningService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PositioningService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
PositioningService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PositioningService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PositioningService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb25pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h4LXVpL3NyYy9saWIvcG9zaXRpb25pbmcvcG9zaXRpb25pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixRQUFRLENBQUMsT0FBMkI7UUFDekMsTUFBTSxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBQyxHQUFHLE9BQU8sQ0FBQztRQUM1RCxnQkFBZ0IsQ0FDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUN4QixVQUFVLEVBQ2YsWUFBWSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLE9BQW9CO1FBQy9DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUU7SUFDbEUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUFZO1FBQ2xDLGtDQUFrQztRQUNsQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFnQixDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxPQUFPLFlBQVksVUFBVSxFQUFFO1lBQ2pDLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUM5QjtRQUVELE9BQU8sT0FBc0IsQ0FBQztJQUNoQyxDQUFDOztnSEExQlUsa0JBQWtCO29IQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcG9zaXRpb25FbGVtZW50cyB9IGZyb20gJy4vbmctcG9zaXRpb25pbmcnO1xyXG5pbXBvcnQge1Bvc2l0aW9uaW5nT3B0aW9uc30gZnJvbSAnLi9wb3NpdGlvbmluZy5vcHRpb25zJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmluZ1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBwb3NpdGlvbihvcHRpb25zOiBQb3NpdGlvbmluZ09wdGlvbnMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHtlbGVtZW50LCB0YXJnZXQsIGF0dGFjaG1lbnQsIGFwcGVuZFRvQm9keX0gPSBvcHRpb25zO1xyXG4gICAgcG9zaXRpb25FbGVtZW50cyhcclxuICAgICAgdGhpcy5fZ2V0SHRtbEVsZW1lbnQodGFyZ2V0KSxcclxuICAgICAgdGhpcy5fZ2V0SHRtbEVsZW1lbnQoZWxlbWVudCksXHJcbiAgICAgIDxhbnk+YXR0YWNobWVudCxcclxuICAgICAgYXBwZW5kVG9Cb2R5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0VsZW1lbnRCZWxvd1RoZUZvbGQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgcmV0dXJuICgocmVjdC50b3AgKyByZWN0LmhlaWdodCkgPiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0SHRtbEVsZW1lbnQoZWxlbWVudDogYW55KTogSFRNTEVsZW1lbnQge1xyXG4gICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBnb3QgYSBzZWxlY3RvclxyXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50KSBhcyBIVE1MRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYpIHtcclxuICAgICAgcmV0dXJuIGVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICB9XHJcbn1cclxuIl19