UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

60 lines 8.35 kB
import { Overlay, OverlayConfig } from '@angular/cdk/overlay'; import { ComponentPortal } from '@angular/cdk/portal'; import { Injectable } from '@angular/core'; import { ResourceSelectorPopupComponent } from './component'; import { ResourceSelectorPopupRef } from './ref'; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/overlay"; export class ResourceSelectorPopupService { constructor(overlay) { this.overlay = overlay; this.subs = []; this.isEventTargetInTooltip = (e) => e.nodeName === 'AUI-TOOLTIP' || (e.parentElement && this.isEventTargetInTooltip(e.parentElement)); } open(config) { const overlayRef = this.createOverlay(config.origin); const portal = new ComponentPortal(ResourceSelectorPopupComponent); const portalRef = overlayRef.attach(portal); const popupRef = new ResourceSelectorPopupRef(overlayRef, this.subs); this.subs.push(overlayRef.outsidePointerEvents().subscribe(e => { // TODO: FIXME if (!this.isEventTargetInTooltip(e.target)) { popupRef.close(); e.stopPropagation(); } })); portalRef.instance.attachContent(config.content, config.popupLite); return popupRef; } createOverlay(origin) { const overlayConfig = this.getOverlayConfig(origin); return this.overlay.create(overlayConfig); } getOverlayConfig(origin) { return new OverlayConfig({ hasBackdrop: false, backdropClass: 'acl-resource-selector__backdrop', panelClass: 'acl-resource-selector__pane', scrollStrategy: this.overlay.scrollStrategies.block(), positionStrategy: this.overlay .position() .flexibleConnectedTo(origin) .withPositions([ { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: 0, }, ]), }); } static { this.ɵfac = function ResourceSelectorPopupService_Factory(t) { return new (t || ResourceSelectorPopupService)(i0.ɵɵinject(i1.Overlay)); }; } static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ResourceSelectorPopupService, factory: ResourceSelectorPopupService.ɵfac }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceSelectorPopupService, [{ type: Injectable }], () => [{ type: i1.Overlay }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9idXNpbmVzcy9yZXNvdXJjZS1zZWxlY3QvaW50ZXJuYWxzL3NlbGVjdG9yLXBvcHVwL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFjLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sT0FBTyxDQUFDOzs7QUFTakQsTUFBTSxPQUFPLDRCQUE0QjtJQUd2QyxZQUE2QixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjdDLFNBQUksR0FBbUIsRUFBRSxDQUFDO1FBc0RULDJCQUFzQixHQUFHLENBQUMsQ0FBYyxFQUFXLEVBQUUsQ0FDcEUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxhQUFhO1lBQzVCLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUF0RHBCLENBQUM7SUFFakQsSUFBSSxDQUFDLE1BQW1DO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFbkUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlDLGNBQWM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxNQUFxQixDQUFDLEVBQUUsQ0FBQztnQkFDMUQsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQWtCO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFrQjtRQUN6QyxPQUFPLElBQUksYUFBYSxDQUFDO1lBQ3ZCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGFBQWEsRUFBRSxpQ0FBaUM7WUFDaEQsVUFBVSxFQUFFLDZCQUE2QjtZQUN6QyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDckQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQzNCLFFBQVEsRUFBRTtpQkFDVixtQkFBbUIsQ0FBQyxNQUFNLENBQUM7aUJBQzNCLGFBQWEsQ0FBQztnQkFDYjtvQkFDRSxPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLFFBQVEsRUFBRSxPQUFPO29CQUNqQixRQUFRLEVBQUUsS0FBSztvQkFDZixPQUFPLEVBQUUsQ0FBQztpQkFDWDthQUNGLENBQUM7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDOzZGQXJEVSw0QkFBNEI7dUVBQTVCLDRCQUE0QixXQUE1Qiw0QkFBNEI7O2lGQUE1Qiw0QkFBNEI7Y0FEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZWxlY3RvclBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb3VyY2VTZWxlY3RvclBvcHVwUmVmIH0gZnJvbSAnLi9yZWYnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlU2VsZWN0b3JQb3B1cENvbmZpZyB7XG4gIG9yaWdpbjogRWxlbWVudFJlZjtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcbiAgcG9wdXBMaXRlPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc291cmNlU2VsZWN0b3JQb3B1cFNlcnZpY2Uge1xuICBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSkge31cblxuICBvcGVuKGNvbmZpZzogUmVzb3VyY2VTZWxlY3RvclBvcHVwQ29uZmlnKSB7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheShjb25maWcub3JpZ2luKTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoUmVzb3VyY2VTZWxlY3RvclBvcHVwQ29tcG9uZW50KTtcblxuICAgIGNvbnN0IHBvcnRhbFJlZiA9IG92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cbiAgICBjb25zdCBwb3B1cFJlZiA9IG5ldyBSZXNvdXJjZVNlbGVjdG9yUG9wdXBSZWYob3ZlcmxheVJlZiwgdGhpcy5zdWJzKTtcblxuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgLy8gVE9ETzogRklYTUVcbiAgICAgICAgaWYgKCF0aGlzLmlzRXZlbnRUYXJnZXRJblRvb2x0aXAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgcG9wdXBSZWYuY2xvc2UoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcG9ydGFsUmVmLmluc3RhbmNlLmF0dGFjaENvbnRlbnQoY29uZmlnLmNvbnRlbnQsIGNvbmZpZy5wb3B1cExpdGUpO1xuXG4gICAgcmV0dXJuIHBvcHVwUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KG9yaWdpbjogRWxlbWVudFJlZikge1xuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSB0aGlzLmdldE92ZXJsYXlDb25maWcob3JpZ2luKTtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyhvcmlnaW46IEVsZW1lbnRSZWYpOiBPdmVybGF5Q29uZmlnIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2FjbC1yZXNvdXJjZS1zZWxlY3Rvcl9fYmFja2Ryb3AnLFxuICAgICAgcGFuZWxDbGFzczogJ2FjbC1yZXNvdXJjZS1zZWxlY3Rvcl9fcGFuZScsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGlzRXZlbnRUYXJnZXRJblRvb2x0aXAgPSAoZTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+XG4gICAgZS5ub2RlTmFtZSA9PT0gJ0FVSS1UT09MVElQJyB8fFxuICAgIChlLnBhcmVudEVsZW1lbnQgJiYgdGhpcy5pc0V2ZW50VGFyZ2V0SW5Ub29sdGlwKGUucGFyZW50RWxlbWVudCkpO1xufVxuIl19