@dotglitch/ngx-common
Version:
Angular components and utilities that are commonly used.
69 lines • 11.6 kB
JavaScript
import { Injectable } from '@angular/core';
import { ConsoleLogger } from '../utils';
import { LazyLoaderComponent } from '../components/lazy-loader/lazy-loader.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/dialog";
import * as i2 from "../components/lazy-loader/lazy-loader.service";
const { log, warn, err } = ConsoleLogger("DialogService", "#607d8b");
export class DialogService {
constructor(dialog, lazyLoader) {
this.dialog = dialog;
this.lazyLoader = lazyLoader;
this.dialogs = [];
}
open(name, groupOrOptions, opts = {}) {
const group = typeof groupOrOptions == "string" ? groupOrOptions : 'default';
if (typeof groupOrOptions == 'object')
opts = groupOrOptions;
return new Promise((resolve, reject) => {
const registration = this.lazyLoader.resolveRegistrationEntry(name, group);
if (!registration)
return reject(new Error("Cannot open dialog for " + name + ". Could not find in registry."));
const args = {
closeOnNavigation: true,
restoreFocus: true,
width: registration['width'],
height: registration['height'],
...opts,
data: {
id: name,
inputs: opts.inputs || {},
outputs: opts.outputs || {},
group: group
},
panelClass: [
"dialog-" + name,
...(Array.isArray(opts.panelClass) ? opts.panelClass : [opts.panelClass])
]
};
let dialog = this.dialog.open(LazyLoaderComponent, args);
dialog['idx'] = name;
this.dialogs.push(dialog);
dialog.afterClosed().subscribe(result => {
log("Dialog closed " + name, result);
resolve(result);
});
});
}
// Close all dialogs matching the given name
close(name) {
const dialogs = this.dialogs.filter(d => d['idx'] == name);
dialogs.forEach(dialog => dialog.close());
}
/**
* Method to close _all_ dialogs.
* Should be used sparingly.
*/
clearDialog() {
this.dialogs.forEach(dialog => dialog.close());
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }, { token: i2.LazyLoaderService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DialogService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DialogService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.LazyLoaderService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7OztBQUd0RixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBcUJyRSxNQUFNLE9BQU8sYUFBYTtJQUl0QixZQUNZLE1BQWlCLEVBQ2pCLFVBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFKakMsWUFBTyxHQUFpQyxFQUFFLENBQUM7SUFNbkQsQ0FBQztJQU1ELElBQUksQ0FBQyxJQUFZLEVBQUUsY0FBb0IsRUFBRSxPQUFzQixFQUFFO1FBQzdELE1BQU0sS0FBSyxHQUFHLE9BQU8sY0FBYyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0UsSUFBSSxPQUFPLGNBQWMsSUFBSSxRQUFRO1lBQ2pDLElBQUksR0FBRyxjQUFjLENBQUM7UUFFMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUVuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsWUFBWTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsK0JBQStCLENBQUMsQ0FBQyxDQUFDO1lBR2pHLE1BQU0sSUFBSSxHQUFvQjtnQkFDMUIsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDO2dCQUM1QixNQUFNLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsR0FBRyxJQUFJO2dCQUNQLElBQUksRUFBRTtvQkFDRixFQUFFLEVBQUUsSUFBSTtvQkFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO29CQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFO29CQUMzQixLQUFLLEVBQUUsS0FBSztpQkFDZjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1IsU0FBUyxHQUFHLElBQUk7b0JBQ2hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzVFO2FBQ0osQ0FBQztZQUVGLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXpELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFMUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDcEMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEtBQUssQ0FBQyxJQUFZO1FBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQXBFUSxhQUFhO2tIQUFiLGFBQWEsY0FGVixNQUFNOzsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29uc29sZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExhenlMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2xhenktbG9hZGVyL2xhenktbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYXp5TG9hZGVyU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbGF6eS1sb2FkZXIvbGF6eS1sb2FkZXIuc2VydmljZSc7XG5cbmNvbnN0IHsgbG9nLCB3YXJuLCBlcnIgfSA9IENvbnNvbGVMb2dnZXIoXCJEaWFsb2dTZXJ2aWNlXCIsIFwiIzYwN2Q4YlwiKTtcblxuZXhwb3J0IHR5cGUgRGlhbG9nT3B0aW9ucyA9IFBhcnRpYWw8T21pdDxNYXREaWFsb2dDb25maWc8YW55PiwgJ2RhdGEnPiAmIHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHByb3BlcnRpZXMgdG8gYmUgcHJvdmlkZWQgdG8gQElucHV0KCkgaW5qZWN0b3JzXG4gICAgICovXG4gICAgaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgcHJvcGVydGllcyB0byBiZSBwcm92aWRlZCB0byBASW5wdXQoKSBpbmplY3RvcnNcbiAgICAgKi9cbiAgICBvdXRwdXRzOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0sXG4gICAgLyoqXG4gICAgICogQ29udGV4dCBpbiB3aGljaCB0byBleGVjdXRlIGNhbGxiYWNrcyBmcm9tIHRoZSBgb3V0cHV0c2AgcHJvcGVydHkgdmlhXG4gICAgICogQE91dHB1dCgpIGV2ZW50IEVtaXR0ZXJzXG4gICAgICovXG4gICAgcGFyZW50OiBhbnlcbn0+O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBkaWFsb2dzOiBNYXREaWFsb2dSZWY8dW5rbm93biwgYW55PltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSBsYXp5TG9hZGVyOiBMYXp5TG9hZGVyU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG9wZW4obmFtZTogc3RyaW5nKVxuICAgIG9wZW4obmFtZTogc3RyaW5nLCBvcHRzOiBEaWFsb2dPcHRpb25zKVxuICAgIG9wZW4obmFtZTogc3RyaW5nLCBncm91cDogc3RyaW5nKVxuICAgIG9wZW4obmFtZTogc3RyaW5nLCBncm91cDogc3RyaW5nLCBvcHRzOiBEaWFsb2dPcHRpb25zKVxuICAgIG9wZW4obmFtZTogc3RyaW5nLCBncm91cE9yT3B0aW9ucz86IGFueSwgb3B0czogRGlhbG9nT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0eXBlb2YgZ3JvdXBPck9wdGlvbnMgPT0gXCJzdHJpbmdcIiA/IGdyb3VwT3JPcHRpb25zIDogJ2RlZmF1bHQnO1xuICAgICAgICBpZiAodHlwZW9mIGdyb3VwT3JPcHRpb25zID09ICdvYmplY3QnKVxuICAgICAgICAgICAgb3B0cyA9IGdyb3VwT3JPcHRpb25zO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMubGF6eUxvYWRlci5yZXNvbHZlUmVnaXN0cmF0aW9uRW50cnkobmFtZSwgZ3JvdXApO1xuICAgICAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoXCJDYW5ub3Qgb3BlbiBkaWFsb2cgZm9yIFwiICsgbmFtZSArIFwiLiBDb3VsZCBub3QgZmluZCBpbiByZWdpc3RyeS5cIikpO1xuXG5cbiAgICAgICAgICAgIGNvbnN0IGFyZ3M6IE1hdERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlZ2lzdHJhdGlvblsnd2lkdGgnXSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJlZ2lzdHJhdGlvblsnaGVpZ2h0J10sXG4gICAgICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IG9wdHMuaW5wdXRzIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBvcHRzLm91dHB1dHMgfHwge30sXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwOiBncm91cFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogW1xuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1cIiArIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KG9wdHMucGFuZWxDbGFzcykgPyBvcHRzLnBhbmVsQ2xhc3MgOiBbb3B0cy5wYW5lbENsYXNzXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihMYXp5TG9hZGVyQ29tcG9uZW50LCBhcmdzKTtcblxuICAgICAgICAgICAgZGlhbG9nWydpZHgnXSA9IG5hbWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ3MucHVzaChkaWFsb2cpO1xuXG4gICAgICAgICAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBsb2coXCJEaWFsb2cgY2xvc2VkIFwiICsgbmFtZSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgYWxsIGRpYWxvZ3MgbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWVcbiAgICBjbG9zZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZGlhbG9ncyA9IHRoaXMuZGlhbG9ncy5maWx0ZXIoZCA9PiBkWydpZHgnXSA9PSBuYW1lKTtcbiAgICAgICAgZGlhbG9ncy5mb3JFYWNoKGRpYWxvZyA9PiBkaWFsb2cuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIGNsb3NlIF9hbGxfIGRpYWxvZ3MuXG4gICAgICogU2hvdWxkIGJlIHVzZWQgc3BhcmluZ2x5LlxuICAgICAqL1xuICAgIGNsZWFyRGlhbG9nKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ3MuZm9yRWFjaChkaWFsb2cgPT4gZGlhbG9nLmNsb3NlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gYSBjb25maXJtYXRpb24gZGlhbG9nLiBXaWxsIHJlamVjdCBpZiBhIGNhbmNlbCBvY2N1cnMuXG4gICAgICogQHBhcmFtIHRpdGxlIHRpdGxlIG9mIHRoZSBkaWFsb2dcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBtYWluIHF1ZXN0aW9uIHRoYXQgYSB1c2VyIG5lZWRzIHRvIGNvbmZpcm0vZGVueVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgLy8gY29uZmlybUFjdGlvbih0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIC8vICAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtYXRpb25Db21wb25lbnQsIHtcbiAgICAvLyAgICAgICAgICAgICBtYXhIZWlnaHQ6IFwiOTB2aFwiLFxuICAgIC8vICAgICAgICAgICAgIG1heFdpZHRoOiBcIjkwdndcIixcbiAgICAvLyAgICAgICAgICAgICBwYW5lbENsYXNzOiBbXCJkaWFsb2ctY29uZmlybWF0aW9uXCJdLFxuICAgIC8vICAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgIC8vICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcbiAgICAvLyAgICAgICAgICAgICBkYXRhOiB7dGl0bGUsIG1lc3NhZ2V9XG4gICAgLy8gICAgICAgICB9KTtcblxuICAgIC8vICAgICAgICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID09IHRydWUgPyByZXMoKSA6IHJlaigpO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cbn1cbiJdfQ==