ngx-modal-dialog
Version:
Dynamic modal dialog for Angular
36 lines • 4.65 kB
JavaScript
import { ComponentFactoryResolver, Inject, Injectable } from '@angular/core';
import { ModalDialogComponent } from './modal-dialog.component';
import { ModalDialogInstanceService } from './modal-dialog-instance.service';
export class ModalDialogService {
/**
* CTOR
* @param componentFactoryResolver
* @param modalDialogInstanceService
*/
constructor(componentFactoryResolver, modalDialogInstanceService) {
this.componentFactoryResolver = componentFactoryResolver;
this.modalDialogInstanceService = modalDialogInstanceService;
}
/**
* Open dialog in given target element with given options
* @param {ViewContainerRef} target
* @param {IModalDialogOptions} options?
*/
openDialog(target, options = {}) {
if (!options.placeOnTop) {
this.modalDialogInstanceService.closeAnyExistingModalDialog();
}
const factory = this.componentFactoryResolver.resolveComponentFactory(ModalDialogComponent);
const componentRef = target.createComponent(factory);
componentRef.instance.dialogInit(componentRef, options);
this.modalDialogInstanceService.saveExistingModalDialog(componentRef);
}
}
ModalDialogService.decorators = [
{ type: Injectable }
];
ModalDialogService.ctorParameters = () => [
{ type: ComponentFactoryResolver, decorators: [{ type: Inject, args: [ComponentFactoryResolver,] }] },
{ type: ModalDialogInstanceService, decorators: [{ type: Inject, args: [ModalDialogInstanceService,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kYWwtZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzdFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7T0FJRztJQUNILFlBQXNELHdCQUFrRCxFQUNoRCwwQkFBc0Q7UUFEeEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNoRCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQzlHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE1BQXdCLEVBQUUsVUFBNkMsRUFBRTtRQUNsRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN2QixJQUFJLENBQUMsMEJBQTBCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztTQUMvRDtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQywwQkFBMEIsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RSxDQUFDOzs7WUExQkYsVUFBVTs7O1lBTEYsd0JBQXdCLHVCQVlsQixNQUFNLFNBQUMsd0JBQXdCO1lBVHJDLDBCQUEwQix1QkFVcEIsTUFBTSxTQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgVmlld0NvbnRhaW5lclJlZiwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJTW9kYWxEaWFsb2dPcHRpb25zIH0gZnJvbSAnLi9tb2RhbC1kaWFsb2cuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vZGFsRGlhbG9nSW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1kaWFsb2ctaW5zdGFuY2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2RhbERpYWxvZ1NlcnZpY2Uge1xuICAvKipcbiAgICogQ1RPUlxuICAgKiBAcGFyYW0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICAqIEBwYXJhbSBtb2RhbERpYWxvZ0luc3RhbmNlU2VydmljZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQEluamVjdChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgIEBJbmplY3QoTW9kYWxEaWFsb2dJbnN0YW5jZVNlcnZpY2UpIHByaXZhdGUgbW9kYWxEaWFsb2dJbnN0YW5jZVNlcnZpY2U6IE1vZGFsRGlhbG9nSW5zdGFuY2VTZXJ2aWNlKSB7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBkaWFsb2cgaW4gZ2l2ZW4gdGFyZ2V0IGVsZW1lbnQgd2l0aCBnaXZlbiBvcHRpb25zXG4gICAqIEBwYXJhbSAge1ZpZXdDb250YWluZXJSZWZ9IHRhcmdldFxuICAgKiBAcGFyYW0gIHtJTW9kYWxEaWFsb2dPcHRpb25zfSBvcHRpb25zP1xuICAgKi9cbiAgb3BlbkRpYWxvZyh0YXJnZXQ6IFZpZXdDb250YWluZXJSZWYsIG9wdGlvbnM6IFBhcnRpYWw8SU1vZGFsRGlhbG9nT3B0aW9uczxhbnk+PiA9IHt9KSB7XG4gICAgaWYgKCFvcHRpb25zLnBsYWNlT25Ub3ApIHtcbiAgICAgIHRoaXMubW9kYWxEaWFsb2dJbnN0YW5jZVNlcnZpY2UuY2xvc2VBbnlFeGlzdGluZ01vZGFsRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE1vZGFsRGlhbG9nQ29tcG9uZW50KTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0YXJnZXQuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaWFsb2dJbml0KGNvbXBvbmVudFJlZiwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLm1vZGFsRGlhbG9nSW5zdGFuY2VTZXJ2aWNlLnNhdmVFeGlzdGluZ01vZGFsRGlhbG9nKGNvbXBvbmVudFJlZik7XG4gIH1cbn1cbiJdfQ==