UNPKG

ngx-pluto

Version:
226 lines 16.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Subject, fromEvent } from "rxjs"; import { filter, take } from "rxjs/operators"; import { Injectable } from "@angular/core"; import { Overlay, OverlayContainer, OverlayConfig, OverlayPositionBuilder } from '@angular/cdk/overlay'; import { TemplatePortal } from '@angular/cdk/portal'; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/overlay"; var OverlayService = /** @class */ (function () { function OverlayService(overlay, overlayPositionBuilder, overlayContainer) { var _this = this; this.overlay = overlay; this.overlayPositionBuilder = overlayPositionBuilder; this.overlayContainer = overlayContainer; this.afterClosed = new Subject(); this.onClosed = this.afterClosed.asObservable(); this.close = (/** * @param {?} data * @return {?} */ function (data) { _this.sub && _this.sub.unsubscribe(); if (_this.overlayRef) { _this.overlayRef.dispose(); _this.overlayRef = null; _this.afterClosed.next(data); } }); } /** * @param {?} type * @param {?} origin * @param {?} tpl * @param {?} viewContainerRef * @param {?} data * @return {?} */ OverlayService.prototype.open = /** * @param {?} type * @param {?} origin * @param {?} tpl * @param {?} viewContainerRef * @param {?} data * @return {?} */ function (type, origin, tpl, viewContainerRef, data) { var _this = this; this.close(null); this.overlayRef = this.overlay.create(this.getOverlayConfig({ origin: origin }, type, true)); this.overlayRef.attach(new TemplatePortal(tpl, viewContainerRef, { $implicit: data, close: this.close })); this.sub = fromEvent(document, "click") .pipe(filter((/** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var clickTarget = (/** @type {?} */ (event.target)); return (clickTarget != origin && (!!_this.overlayRef && !_this.overlayRef.overlayElement.contains(clickTarget))); })), take(1)) .subscribe((/** * @return {?} */ function () { _this.close(null); })); return this.onClosed.pipe(take(1)); }; /** * @param {?} origin * @param {?} tpl * @param {?} viewContainerRef * @param {?} data * @return {?} */ OverlayService.prototype.openDropdown = /** * @param {?} origin * @param {?} tpl * @param {?} viewContainerRef * @param {?} data * @return {?} */ function (origin, tpl, viewContainerRef, data) { return this.open(PopupType.DROPDOWN, origin, tpl, viewContainerRef, data); }; /** * @return {?} */ OverlayService.prototype.isAttached = /** * @return {?} */ function () { if (this.overlayRef) { return this.overlayRef.hasAttached(); } return false; }; /** * @private * @param {?} origin * @return {?} */ OverlayService.prototype.getOverlayPosition = /** * @private * @param {?} origin * @return {?} */ function (origin) { /** @type {?} */ var positionStrategy = this.overlayPositionBuilder .flexibleConnectedTo(origin) .withPositions(this.getDropdownPositions()); return positionStrategy; }; /** * @private * @param {?} __0 * @param {?} type * @param {?=} hasBackdrop * @return {?} */ OverlayService.prototype.getOverlayConfig = /** * @private * @param {?} __0 * @param {?} type * @param {?=} hasBackdrop * @return {?} */ function (_a, type, hasBackdrop) { var origin = _a.origin; if (hasBackdrop === void 0) { hasBackdrop = false; } return new OverlayConfig({ hasBackdrop: hasBackdrop, backdropClass: 'backdrop-transparent', positionStrategy: type === PopupType.DROPDOWN ? this.getOverlayPosition(origin) : this.getOverlayPosition(origin), // TODO scrollStrategy: this.overlay.scrollStrategies.block() }); }; /** * @private * @return {?} */ OverlayService.prototype.getDropdownPositions = /** * @private * @return {?} */ function () { return [ { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top", offsetX: 0, offsetY: 0 }, { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetX: 0, offsetY: 0 } ]; }; OverlayService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ OverlayService.ctorParameters = function () { return [ { type: Overlay }, { type: OverlayPositionBuilder }, { type: OverlayContainer } ]; }; /** @nocollapse */ OverlayService.ngInjectableDef = i0.defineInjectable({ factory: function OverlayService_Factory() { return new OverlayService(i0.inject(i1.Overlay), i0.inject(i1.OverlayPositionBuilder), i0.inject(i1.OverlayContainer)); }, token: OverlayService, providedIn: "root" }); return OverlayService; }()); export { OverlayService }; if (false) { /** @type {?} */ OverlayService.prototype.overlayRef; /** @type {?} */ OverlayService.prototype.sub; /** * @type {?} * @private */ OverlayService.prototype.afterClosed; /** @type {?} */ OverlayService.prototype.onClosed; /** @type {?} */ OverlayService.prototype.close; /** * @type {?} * @private */ OverlayService.prototype.overlay; /** * @type {?} * @private */ OverlayService.prototype.overlayPositionBuilder; /** * @type {?} * @private */ OverlayService.prototype.overlayContainer; } /** @enum {number} */ var PopupType = { DROPDOWN: 0, MENU: 1, }; export { PopupType }; PopupType[PopupType.DROPDOWN] = 'DROPDOWN'; PopupType[PopupType.MENU] = 'MENU'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXBsdXRvLyIsInNvdXJjZXMiOlsibGliL2NvbW1vbi9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQTRCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFPLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLGFBQWEsRUFBc0Msc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5SixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUVyRDtJQVNJLHdCQUFvQixPQUFnQixFQUN4QixzQkFBOEMsRUFDOUMsZ0JBQWtDO1FBRjlDLGlCQUVtRDtRQUYvQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ3hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUx0QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDekMsYUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFnQzNDLFVBQUs7Ozs7UUFBRyxVQUFDLElBQVM7WUFDZCxLQUFJLENBQUMsR0FBRyxJQUFJLEtBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsSUFBSSxLQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNqQixLQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixLQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFD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RUFBRTtTQUN4RCxDQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVPLDZDQUFvQjs7OztJQUE1QjtRQUNJLE9BQU87WUFDSDtnQkFDSSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLENBQUM7YUFDYjtTQUNKLENBQUM7SUFDTixDQUFDOztnQkE1RkosVUFBVSxTQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7OztnQkFMUSxPQUFPO2dCQUF5RixzQkFBc0I7Z0JBQTdHLGdCQUFnQjs7O3lCQUhsQztDQW1HQyxBQTdGRCxJQTZGQztTQTFGWSxjQUFjOzs7SUFDdkIsb0NBQXVCOztJQUN2Qiw2QkFBa0I7Ozs7O0lBQ2xCLHFDQUF5Qzs7SUFDekMsa0NBQTJDOztJQWdDM0MsK0JBT0M7Ozs7O0lBckNXLGlDQUF3Qjs7Ozs7SUFDaEMsZ0RBQXNEOzs7OztJQUN0RCwwQ0FBMEM7Ozs7SUFxRjlDLFdBQVk7SUFDWixPQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb250YWluZXIsIFBvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXlDb25maWcsIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXlSZWYsIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE92ZXJsYXlTZXJ2aWNlIHtcclxuICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgICBzdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgYWZ0ZXJDbG9zZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgICBvbkNsb3NlZCA9IHRoaXMuYWZ0ZXJDbG9zZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxyXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheVBvc2l0aW9uQnVpbGRlcjogT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIG92ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXIpIHsgfVxyXG5cclxuICAgIG9wZW4odHlwZTogUG9wdXBUeXBlLCBvcmlnaW46IEhUTUxFbGVtZW50LCB0cGw6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuY2xvc2UobnVsbCk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh0aGlzLmdldE92ZXJsYXlDb25maWcoeyBvcmlnaW46IG9yaWdpbiB9LCB0eXBlLCB0cnVlKSk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodHBsLCB2aWV3Q29udGFpbmVyUmVmLCB7XHJcbiAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSwgY2xvc2U6IHRoaXMuY2xvc2VcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3ViID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCBcImNsaWNrXCIpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlja1RhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGNsaWNrVGFyZ2V0ICE9IG9yaWdpbiAmJiAoISF0aGlzLm92ZXJsYXlSZWYgJiYgIXRoaXMub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldCkpKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZShudWxsKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uQ2xvc2VkLnBpcGUodGFrZSgxKSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRyb3Bkb3duKG9yaWdpbjogSFRNTEVsZW1lbnQsIHRwbDogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbihQb3B1cFR5cGUuRFJPUERPV04sIG9yaWdpbiwgdHBsLCB2aWV3Q29udGFpbmVyUmVmLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN1YiAmJiB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5hZnRlckNsb3NlZC5uZXh0KGRhdGEpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlzQXR0YWNoZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luOiBhbnkpOiBQb3NpdGlvblN0cmF0ZWd5IHtcclxuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5UG9zaXRpb25CdWlsZGVyXHJcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcclxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXREcm9wZG93blBvc2l0aW9ucygpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKHsgb3JpZ2luIH0sIHR5cGU6IFBvcHVwVHlwZSwgaGFzQmFja2Ryb3AgPSBmYWxzZSk6IE92ZXJsYXlDb25maWcge1xyXG4gICAgICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBoYXNCYWNrZHJvcCxcclxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wLXRyYW5zcGFyZW50JyxcclxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdHlwZSA9PT0gUG9wdXBUeXBlLkRST1BET1dOID8gdGhpcy5nZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luKSA6IHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbiksIC8vIFRPRE9cclxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERyb3Bkb3duUG9zaXRpb25zKCk6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luWDogXCJzdGFydFwiLFxyXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogXCJib3R0b21cIixcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBcInN0YXJ0XCIsXHJcbiAgICAgICAgICAgICAgICBvdmVybGF5WTogXCJ0b3BcIixcclxuICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXHJcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9yaWdpblg6IFwic3RhcnRcIixcclxuICAgICAgICAgICAgICAgIG9yaWdpblk6IFwidG9wXCIsXHJcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogXCJzdGFydFwiLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6IFwiYm90dG9tXCIsXHJcbiAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gUG9wdXBUeXBlIHtcclxuICAgIERST1BET1dOID0gMCxcclxuICAgIE1FTlUgPSAxXHJcbn0iXX0=