ngx-pluto
Version:
226 lines • 16.6 kB
JavaScript
/**
* @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=