@alauda-fe/common
Version:
Alauda frontend team common codes.
60 lines • 8.35 kB
JavaScript
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