@angular-mdl/core
Version:
Angular components, directives and styles based on material design lite https://getmdl.io.
60 lines • 8.52 kB
JavaScript
import { ApplicationRef, ComponentFactoryResolver, EventEmitter, Injectable, } from "@angular/core";
import { MdlBackdropOverlayComponent } from "./mdl-backdrop-overlay.component";
import { filter, take } from "rxjs/operators";
import { MdlDialogOutletComponent } from "./mdl-dialog-outlet.component";
import * as i0 from "@angular/core";
export class MdlDialogOutletService {
constructor(appRef, componentFactoryResolver) {
this.appRef = appRef;
this.componentFactoryResolver = componentFactoryResolver;
this.backdropClickEmitter = new EventEmitter();
this.viewContainerRefInternal = null;
let dialogOutletCompRef = null;
appRef.isStable
.pipe(take(1), filter(() => this.viewContainerRefInternal == null))
.subscribe(() => {
try {
dialogOutletCompRef = this.appRef.bootstrap(MdlDialogOutletComponent);
}
catch (e) {
// the user did not use the dialog.outlet element outside of his root app.
// console.log(e);
}
if (dialogOutletCompRef) {
this.setViewContainerRef(dialogOutletCompRef.instance.viewContainerRef);
}
});
}
get viewContainerRef() {
return this.viewContainerRefInternal;
}
setDefaultViewContainerRef(vCRef) {
this.setViewContainerRef(vCRef);
}
hideBackdrop() {
this.backdropComponent?.hide();
}
showBackdropWithZIndex(zIndex) {
this.backdropComponent?.showWithZIndex(zIndex);
}
setViewContainerRef(value) {
this.viewContainerRefInternal = value;
if (this.viewContainerRefInternal) {
const cFactory = this.componentFactoryResolver.resolveComponentFactory(MdlBackdropOverlayComponent);
this.backdropComponent =
this.viewContainerRefInternal.createComponent(cFactory).instance;
this.backdropComponent.clickEmitter.subscribe(() => {
this.backdropClickEmitter.emit();
});
}
}
}
MdlDialogOutletService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlDialogOutletService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
MdlDialogOutletService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlDialogOutletService, providedIn: "root" });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlDialogOutletService, decorators: [{
type: Injectable,
args: [{
providedIn: "root",
}]
}], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRsLWRpYWxvZy1vdXRsZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9kaWFsb2ctb3V0bGV0L21kbC1kaWFsb2ctb3V0bGV0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCx3QkFBd0IsRUFFeEIsWUFBWSxFQUNaLFVBQVUsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUt6RSxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLFlBQ1UsTUFBc0IsRUFDdEIsd0JBQWtEO1FBRGxELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFQNUQseUJBQW9CLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsNkJBQXdCLEdBQTRCLElBQUksQ0FBQztRQU8vRCxJQUFJLG1CQUFtQixHQUNyQixJQUFJLENBQUM7UUFDUCxNQUFNLENBQUMsUUFBUTthQUNaLElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsQ0FDcEQ7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSTtnQkFDRixtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQ3ZFO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsMEVBQTBFO2dCQUMxRSxrQkFBa0I7YUFDbkI7WUFDRCxJQUFJLG1CQUFtQixFQUFFO2dCQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDOUMsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQThCO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBYztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUE4QjtRQUN4RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBRXRDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FDcEUsMkJBQTJCLENBQzVCLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCO2dCQUNwQixJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUNuRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7bUhBN0RVLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RhYmxlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWRsQmFja2Ryb3BPdmVybGF5Q29tcG9uZW50IH0gZnJvbSBcIi4vbWRsLWJhY2tkcm9wLW92ZXJsYXkuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE1kbERpYWxvZ091dGxldENvbXBvbmVudCB9IGZyb20gXCIuL21kbC1kaWFsb2ctb3V0bGV0LmNvbXBvbmVudFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxEaWFsb2dPdXRsZXRTZXJ2aWNlIHtcbiAgYmFja2Ryb3BDbGlja0VtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWZJbnRlcm5hbDogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGJhY2tkcm9wQ29tcG9uZW50OiBNZGxCYWNrZHJvcE92ZXJsYXlDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgKSB7XG4gICAgbGV0IGRpYWxvZ091dGxldENvbXBSZWY6IENvbXBvbmVudFJlZjxNZGxEaWFsb2dPdXRsZXRDb21wb25lbnQ+IHwgbnVsbCA9XG4gICAgICBudWxsO1xuICAgIGFwcFJlZi5pc1N0YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnZpZXdDb250YWluZXJSZWZJbnRlcm5hbCA9PSBudWxsKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZGlhbG9nT3V0bGV0Q29tcFJlZiA9IHRoaXMuYXBwUmVmLmJvb3RzdHJhcChNZGxEaWFsb2dPdXRsZXRDb21wb25lbnQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGRpYWxvZy5vdXRsZXQgZWxlbWVudCBvdXRzaWRlIG9mIGhpcyByb290IGFwcC5cbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlhbG9nT3V0bGV0Q29tcFJlZikge1xuICAgICAgICAgIHRoaXMuc2V0Vmlld0NvbnRhaW5lclJlZihcbiAgICAgICAgICAgIGRpYWxvZ091dGxldENvbXBSZWYuaW5zdGFuY2Uudmlld0NvbnRhaW5lclJlZlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0IHZpZXdDb250YWluZXJSZWYoKTogVmlld0NvbnRhaW5lclJlZiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250YWluZXJSZWZJbnRlcm5hbDtcbiAgfVxuXG4gIHNldERlZmF1bHRWaWV3Q29udGFpbmVyUmVmKHZDUmVmOiBWaWV3Q29udGFpbmVyUmVmIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Vmlld0NvbnRhaW5lclJlZih2Q1JlZik7XG4gIH1cblxuICBoaWRlQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrZHJvcENvbXBvbmVudD8uaGlkZSgpO1xuICB9XG5cbiAgc2hvd0JhY2tkcm9wV2l0aFpJbmRleCh6SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYmFja2Ryb3BDb21wb25lbnQ/LnNob3dXaXRoWkluZGV4KHpJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZpZXdDb250YWluZXJSZWYodmFsdWU6IFZpZXdDb250YWluZXJSZWYgfCBudWxsKSB7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmSW50ZXJuYWwgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLnZpZXdDb250YWluZXJSZWZJbnRlcm5hbCkge1xuICAgICAgY29uc3QgY0ZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgTWRsQmFja2Ryb3BPdmVybGF5Q29tcG9uZW50XG4gICAgICApO1xuICAgICAgdGhpcy5iYWNrZHJvcENvbXBvbmVudCA9XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZkludGVybmFsLmNyZWF0ZUNvbXBvbmVudChjRmFjdG9yeSkuaW5zdGFuY2U7XG4gICAgICB0aGlzLmJhY2tkcm9wQ29tcG9uZW50LmNsaWNrRW1pdHRlci5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmJhY2tkcm9wQ2xpY2tFbWl0dGVyLmVtaXQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19