@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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7OztBQUd0RixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBcUJyRSxNQUFNLE9BQU8sYUFBYTtJQUl0QixZQUNZLE1BQWlCLEVBQ2pCLFVBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFKakMsWUFBTyxHQUFpQyxFQUFFLENBQUM7SUFNbkQsQ0FBQztJQU1ELElBQUksQ0FBQyxJQUFZLEVBQUUsY0FBb0IsRUFBRSxPQUFzQixFQUFFO1FBQzdELE1BQU0sS0FBSyxHQUFHLE9BQU8sY0FBYyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0UsSUFBSSxPQUFPLGNBQWMsSUFBSSxRQUFRO1lBQ2pDLElBQUksR0FBRyxjQUFjLENBQUM7UUFFMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUVuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsWUFBWTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsK0JBQStCLENBQUMsQ0FBQyxDQUFDO1lBR2pHLE1BQU0sSUFBSSxHQUFHO2dCQUNULGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQztnQkFDNUIsTUFBTSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQzlCLEdBQUcsSUFBSTtnQkFDUCxJQUFJLEVBQUU7b0JBQ0YsRUFBRSxFQUFFLElBQUk7b0JBQ1IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtvQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRTtvQkFDM0IsS0FBSyxFQUFFLEtBQUs7aUJBQ2Y7Z0JBQ0QsVUFBVSxFQUFFO29CQUNSLFNBQVMsR0FBRyxJQUFJO29CQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDbEY7YUFDSixDQUFDO1lBRUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxQixNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNwQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsS0FBSyxDQUFDLElBQVk7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMzRCxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OEdBcEVRLGFBQWE7a0hBQWIsYUFBYSxjQUZWLE1BQU07OzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25zb2xlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGF6eUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbGF6eS1sb2FkZXIvbGF6eS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExhenlMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9sYXp5LWxvYWRlci9sYXp5LWxvYWRlci5zZXJ2aWNlJztcblxuY29uc3QgeyBsb2csIHdhcm4sIGVyciB9ID0gQ29uc29sZUxvZ2dlcihcIkRpYWxvZ1NlcnZpY2VcIiwgXCIjNjA3ZDhiXCIpO1xuXG5leHBvcnQgdHlwZSBEaWFsb2dPcHRpb25zID0gUGFydGlhbDxPbWl0PE1hdERpYWxvZ0NvbmZpZzxhbnk+LCAnZGF0YSc+ICYge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgcHJvcGVydGllcyB0byBiZSBwcm92aWRlZCB0byBASW5wdXQoKSBpbmplY3RvcnNcbiAgICAgKi9cbiAgICBpbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBwcm9wZXJ0aWVzIHRvIGJlIHByb3ZpZGVkIHRvIEBJbnB1dCgpIGluamVjdG9yc1xuICAgICAqL1xuICAgIG91dHB1dHM6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSxcbiAgICAvKipcbiAgICAgKiBDb250ZXh0IGluIHdoaWNoIHRvIGV4ZWN1dGUgY2FsbGJhY2tzIGZyb20gdGhlIGBvdXRwdXRzYCBwcm9wZXJ0eSB2aWFcbiAgICAgKiBAT3V0cHV0KCkgZXZlbnQgRW1pdHRlcnNcbiAgICAgKi9cbiAgICBwYXJlbnQ6IGFueVxufT47XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSB7XG5cbiAgICBwcml2YXRlIGRpYWxvZ3M6IE1hdERpYWxvZ1JlZjx1bmtub3duLCBhbnk+W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIGxhenlMb2FkZXI6IExhenlMb2FkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgb3BlbihuYW1lOiBzdHJpbmcpXG4gICAgb3BlbihuYW1lOiBzdHJpbmcsIG9wdHM6IERpYWxvZ09wdGlvbnMpXG4gICAgb3BlbihuYW1lOiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcpXG4gICAgb3BlbihuYW1lOiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcsIG9wdHM6IERpYWxvZ09wdGlvbnMpXG4gICAgb3BlbihuYW1lOiBzdHJpbmcsIGdyb3VwT3JPcHRpb25zPzogYW55LCBvcHRzOiBEaWFsb2dPcHRpb25zID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHR5cGVvZiBncm91cE9yT3B0aW9ucyA9PSBcInN0cmluZ1wiID8gZ3JvdXBPck9wdGlvbnMgOiAnZGVmYXVsdCc7XG4gICAgICAgIGlmICh0eXBlb2YgZ3JvdXBPck9wdGlvbnMgPT0gJ29iamVjdCcpXG4gICAgICAgICAgICBvcHRzID0gZ3JvdXBPck9wdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5sYXp5TG9hZGVyLnJlc29sdmVSZWdpc3RyYXRpb25FbnRyeShuYW1lLCBncm91cCk7XG4gICAgICAgICAgICBpZiAoIXJlZ2lzdHJhdGlvbilcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihcIkNhbm5vdCBvcGVuIGRpYWxvZyBmb3IgXCIgKyBuYW1lICsgXCIuIENvdWxkIG5vdCBmaW5kIGluIHJlZ2lzdHJ5LlwiKSk7XG5cblxuICAgICAgICAgICAgY29uc3QgYXJncyA9IHtcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlZ2lzdHJhdGlvblsnd2lkdGgnXSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJlZ2lzdHJhdGlvblsnaGVpZ2h0J10sXG4gICAgICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IG9wdHMuaW5wdXRzIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRzOiBvcHRzLm91dHB1dHMgfHwge30sXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwOiBncm91cFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogW1xuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1cIiArIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KG9wdHMucGFuZWxDbGFzcykgPyBvcHRzLnBhbmVsQ2xhc3MgOiBbb3B0cy5wYW5lbENsYXNzXSB8fCBbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihMYXp5TG9hZGVyQ29tcG9uZW50LCBhcmdzKTtcblxuICAgICAgICAgICAgZGlhbG9nWydpZHgnXSA9IG5hbWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ3MucHVzaChkaWFsb2cpO1xuXG4gICAgICAgICAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBsb2coXCJEaWFsb2cgY2xvc2VkIFwiICsgbmFtZSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgYWxsIGRpYWxvZ3MgbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWVcbiAgICBjbG9zZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZGlhbG9ncyA9IHRoaXMuZGlhbG9ncy5maWx0ZXIoZCA9PiBkWydpZHgnXSA9PSBuYW1lKTtcbiAgICAgICAgZGlhbG9ncy5mb3JFYWNoKGRpYWxvZyA9PiBkaWFsb2cuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIGNsb3NlIF9hbGxfIGRpYWxvZ3MuXG4gICAgICogU2hvdWxkIGJlIHVzZWQgc3BhcmluZ2x5LlxuICAgICAqL1xuICAgIGNsZWFyRGlhbG9nKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ3MuZm9yRWFjaChkaWFsb2cgPT4gZGlhbG9nLmNsb3NlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gYSBjb25maXJtYXRpb24gZGlhbG9nLiBXaWxsIHJlamVjdCBpZiBhIGNhbmNlbCBvY2N1cnMuXG4gICAgICogQHBhcmFtIHRpdGxlIHRpdGxlIG9mIHRoZSBkaWFsb2dcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBtYWluIHF1ZXN0aW9uIHRoYXQgYSB1c2VyIG5lZWRzIHRvIGNvbmZpcm0vZGVueVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgLy8gY29uZmlybUFjdGlvbih0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIC8vICAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtYXRpb25Db21wb25lbnQsIHtcbiAgICAvLyAgICAgICAgICAgICBtYXhIZWlnaHQ6IFwiOTB2aFwiLFxuICAgIC8vICAgICAgICAgICAgIG1heFdpZHRoOiBcIjkwdndcIixcbiAgICAvLyAgICAgICAgICAgICBwYW5lbENsYXNzOiBbXCJkaWFsb2ctY29uZmlybWF0aW9uXCJdLFxuICAgIC8vICAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgIC8vICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcbiAgICAvLyAgICAgICAgICAgICBkYXRhOiB7dGl0bGUsIG1lc3NhZ2V9XG4gICAgLy8gICAgICAgICB9KTtcblxuICAgIC8vICAgICAgICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID09IHRydWUgPyByZXMoKSA6IHJlaigpO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cbn1cbiJdfQ==