ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
90 lines • 14 kB
JavaScript
import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';
import { ComponentPortal } from '@angular/cdk/portal';
import { ChangeDetectorRef, ElementRef, Injectable, Renderer2 } from '@angular/core';
import { Subject, Subscription } from 'rxjs';
import { OContextMenuContentComponent } from './context-menu/o-context-menu-content.component';
import { OContextMenuOverlayService } from './o-context-menu-overlay.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/cdk/overlay";
import * as i2 from "./o-context-menu-overlay.service";
export class OContextMenuService {
constructor(overlay, scrollStrategy, cd, overlayService, renderer) {
this.overlay = overlay;
this.scrollStrategy = scrollStrategy;
this.cd = cd;
this.overlayService = overlayService;
this.renderer = renderer;
this.showContextMenu = new Subject();
this.closeContextMenu = new Subject();
this.fakeElement = new ElementRef({ nativeElement: '' });
this.subscription = new Subscription();
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
openContextMenu(context) {
this.destroyOverlays();
this.createOverlay(context);
}
destroyOverlays() {
this.overlayService.destroyOverlays();
}
createOverlay(context) {
context.event.preventDefault();
context.event.stopPropagation();
this.fakeElement.nativeElement.getBoundingClientRect = () => ({
bottom: context.event.clientY,
height: 0,
left: context.event.clientX,
right: context.event.clientX,
top: context.event.clientY,
width: 0,
x: 0,
y: 0,
toJSON: () => { }
});
const positionStrategy = this.overlay.position()
.flexibleConnectedTo(context.anchorElement || this.fakeElement)
.withPositions([{
overlayX: 'start',
overlayY: 'top',
originX: 'start',
originY: 'bottom'
}]);
const overlayRef = this.overlay.create({
positionStrategy: positionStrategy,
hasBackdrop: false,
panelClass: ['o-context-menu'],
scrollStrategy: this.scrollStrategy.close()
});
this.overlayService.addOverlay(overlayRef);
this.attachContextMenu(overlayRef, context);
setTimeout(() => {
overlayRef.hostElement.classList.add('overlay-ref-display-none');
const nextSibling = overlayRef.hostElement.nextElementSibling;
if (nextSibling) {
const top = nextSibling.getBoundingClientRect().top;
this.renderer.setStyle(nextSibling, 'top', `${top - 32}px`);
}
this.cd.detectChanges();
});
}
attachContextMenu(overlay, context) {
const contextMenuContent = overlay.attach(new ComponentPortal(OContextMenuContentComponent));
contextMenuContent.instance.overlay = overlay;
contextMenuContent.instance.menuItems = context.menuItems;
contextMenuContent.instance.externalMenuItems = context.externalMenuItems;
contextMenuContent.instance.data = context.data;
contextMenuContent.instance.menuClass = context.class;
this.subscription.add(contextMenuContent.instance.close.subscribe(() => {
this.closeContextMenu.next(void 0);
this.destroyOverlays();
}));
}
}
OContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OContextMenuService, deps: [{ token: i1.Overlay }, { token: i1.ScrollStrategyOptions }, { token: i0.ChangeDetectorRef }, { token: i2.OContextMenuOverlayService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
OContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OContextMenuService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OContextMenuService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i1.ScrollStrategyOptions }, { type: i0.ChangeDetectorRef }, { type: i2.OContextMenuOverlayService }, { type: i0.Renderer2 }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb250ZXh0LW1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRleHRtZW51L28tY29udGV4dC1tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQWdCLFVBQVUsRUFBRSxVQUFVLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzdDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBRzlFLE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsWUFDVSxPQUFnQixFQUNoQixjQUFxQyxFQUNyQyxFQUFxQixFQUNyQixjQUEwQyxFQUMxQyxRQUFtQjtRQUpuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBNEI7UUFDMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVZ0QixvQkFBZSxHQUFxQyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUMzRixxQkFBZ0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuRCxnQkFBVyxHQUFlLElBQUksVUFBVSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsaUJBQVksR0FBaUIs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T0FBTyxDQUFDO1FBQzlDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUMxRCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQzFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNoRCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7O2lIQTFGVSxtQkFBbUI7cUhBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiwgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElPQ29udGV4dE1lbnVDbGlja0V2ZW50LCBJT0NvbnRleHRNZW51Q29udGV4dCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1jb250ZXh0LW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9Db250ZXh0TWVudUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtbWVudS9vLWNvbnRleHQtbWVudS1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPQ29udGV4dE1lbnVPdmVybGF5U2VydmljZSB9IGZyb20gJy4vby1jb250ZXh0LW1lbnUtb3ZlcmxheS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9Db250ZXh0TWVudVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBzaG93Q29udGV4dE1lbnU6IFN1YmplY3Q8SU9Db250ZXh0TWVudUNsaWNrRXZlbnQ+ID0gbmV3IFN1YmplY3Q8SU9Db250ZXh0TWVudUNsaWNrRXZlbnQ+KCk7XG4gIHB1YmxpYyBjbG9zZUNvbnRleHRNZW51OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGZha2VFbGVtZW50OiBFbGVtZW50UmVmID0gbmV3IEVsZW1lbnRSZWYoeyBuYXRpdmVFbGVtZW50OiAnJyB9KTtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHNjcm9sbFN0cmF0ZWd5OiBTY3JvbGxTdHJhdGVneU9wdGlvbnMsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogT0NvbnRleHRNZW51T3ZlcmxheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkNvbnRleHRNZW51KGNvbnRleHQ6IElPQ29udGV4dE1lbnVDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheXMoKTtcbiAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoY29udGV4dCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzdHJveU92ZXJsYXlzKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuZGVzdHJveU92ZXJsYXlzKCk7XG4gIH1cblxuICAvLyBDcmVhdGUgb3ZlcmxheSBhbmQgYXR0YWNoIGBvLWNvbnRleHQtbWVudS1jb250ZW50YCB0byBpdCBpbiBvcmRlciB0byB0cmlnZ2VyIHRoZSBtZW51IGNsaWNrLCB0aGUgbWVudSBvcGVucyBpbiBhIG5ldyBvdmVybGF5XG4gIC8vIFRPRE86IHRyeSB0byB1c2Ugb25seSBvbmUgb3ZlcmxheVxuICBwcm90ZWN0ZWQgY3JlYXRlT3ZlcmxheShjb250ZXh0OiBJT0NvbnRleHRNZW51Q29udGV4dCk6IHZvaWQge1xuICAgIGNvbnRleHQuZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb250ZXh0LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5mYWtlRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9ICgpOiBET01SZWN0ID0+ICh7XG4gICAgICBib3R0b206IGNvbnRleHQuZXZlbnQuY2xpZW50WSxcbiAgICAgIGhlaWdodDogMCxcbiAgICAgIGxlZnQ6IGNvbnRleHQuZXZlbnQuY2xpZW50WCxcbiAgICAgIHJpZ2h0OiBjb250ZXh0LmV2ZW50LmNsaWVudFgsXG4gICAgICB0b3A6IGNvbnRleHQuZXZlbnQuY2xpZW50WSxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB0b0pTT046ICgpID0+IHsgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhjb250ZXh0LmFuY2hvckVsZW1lbnQgfHwgdGhpcy5mYWtlRWxlbWVudClcbiAgICAgIC53aXRoUG9zaXRpb25zKFt7XG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nXG4gICAgICB9XSk7XG5cbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWNvbnRleHQtbWVudSddLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3kuY2xvc2UoKVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGRPdmVybGF5KG92ZXJsYXlSZWYpO1xuXG4gICAgdGhpcy5hdHRhY2hDb250ZXh0TWVudShvdmVybGF5UmVmLCBjb250ZXh0KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gV29ya2Fyb3VuZCB0byBkZWxldGUgZmlyc3QgbGV2ZWwgbWVudSB0cmlnZ2VyXG4gICAgICBvdmVybGF5UmVmLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ292ZXJsYXktcmVmLWRpc3BsYXktbm9uZScpO1xuICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBvdmVybGF5UmVmLmhvc3RFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgICBjb25zdCB0b3AgPSBuZXh0U2libGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobmV4dFNpYmxpbmcsICd0b3AnLCBgJHt0b3AgLSAzMn1weGApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KVxuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFjaENvbnRleHRNZW51KG92ZXJsYXk6IE92ZXJsYXlSZWYsIGNvbnRleHQ6IElPQ29udGV4dE1lbnVDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dE1lbnVDb250ZW50OiBDb21wb25lbnRSZWY8T0NvbnRleHRNZW51Q29udGVudENvbXBvbmVudD4gPSBvdmVybGF5LmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKE9Db250ZXh0TWVudUNvbnRlbnRDb21wb25lbnQpKTtcbiAgICBjb250ZXh0TWVudUNvbnRlbnQuaW5zdGFuY2Uub3ZlcmxheSA9IG92ZXJsYXk7XG4gICAgY29udGV4dE1lbnVDb250ZW50Lmluc3RhbmNlLm1lbnVJdGVtcyA9IGNvbnRleHQubWVudUl0ZW1zO1xuICAgIGNvbnRleHRNZW51Q29udGVudC5pbnN0YW5jZS5leHRlcm5hbE1lbnVJdGVtcyA9IGNvbnRleHQuZXh0ZXJuYWxNZW51SXRlbXM7XG4gICAgY29udGV4dE1lbnVDb250ZW50Lmluc3RhbmNlLmRhdGEgPSBjb250ZXh0LmRhdGE7XG4gICAgY29udGV4dE1lbnVDb250ZW50Lmluc3RhbmNlLm1lbnVDbGFzcyA9IGNvbnRleHQuY2xhc3M7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKGNvbnRleHRNZW51Q29udGVudC5pbnN0YW5jZS5jbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZUNvbnRleHRNZW51Lm5leHQodm9pZCAwKTtcbiAgICAgIHRoaXMuZGVzdHJveU92ZXJsYXlzKCk7XG4gICAgfSkpO1xuICB9XG5cbn1cbiJdfQ==