@universal-material/angular
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.0.
66 lines • 7.23 kB
JavaScript
import { Inject, Injectable } from '@angular/core';
import { first } from 'rxjs/operators';
import { DOCUMENT } from '@angular/common';
import { Key } from '../util/key';
import * as i0 from "@angular/core";
export class DialogStackService {
static { this._dialogStack = []; }
constructor(_document) {
this._document = _document;
this._document.body.addEventListener('keydown', (e) => {
if (e.keyCode === Key.Escape) {
this.closeTopMostDialog();
}
});
}
removeDialog(dialog) {
const index = DialogStackService._dialogStack.indexOf(dialog);
if (index < 0) {
return;
}
DialogStackService._dialogStack.splice(index, 1);
}
addDialog(dialog) {
const index = DialogStackService._dialogStack.indexOf(dialog);
if (index < 0) {
return;
}
DialogStackService._dialogStack.unshift(dialog);
}
add(dialog) {
if (dialog.show) {
this.addDialog(dialog);
}
else {
dialog.showChange
.pipe(first())
.subscribe(show => {
if (show) {
this.addDialog(dialog);
}
});
}
dialog.afterClose
.pipe(first())
.subscribe(() => this.removeDialog(dialog));
DialogStackService._dialogStack.unshift(dialog);
}
closeTopMostDialog() {
for (const dialog of DialogStackService._dialogStack) {
if (dialog._dialogConfig && dialog._dialogConfig.closeOnEsc) {
dialog.close();
break;
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogStackService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogStackService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogStackService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXN0YWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGlhbG9nL2RpYWxvZy1zdGFjay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHbEMsTUFBTSxPQUFPLGtCQUFrQjthQUNkLGlCQUFZLEdBQXNCLEVBQUUsQUFBeEIsQ0FBeUI7SUFFcEQsWUFBK0MsU0FBYztRQUFkLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBZ0IsRUFBRSxFQUFFO1lBQ25FLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUM1QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUF1QjtRQUNsQyxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUVELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBdUI7UUFDL0IsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5RCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFFRCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxHQUFHLENBQUMsTUFBdUI7UUFFekIsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjthQUFNO1lBQ0wsTUFBTSxDQUFDLFVBQVU7aUJBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDeEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsTUFBTSxDQUFDLFVBQVU7YUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDYixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTlDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixLQUFLLE1BQU0sTUFBTSxJQUFJLGtCQUFrQixDQUFDLFlBQVksRUFBRTtZQUNwRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7Z0JBQzNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7K0dBM0RVLGtCQUFrQixrQkFHVCxRQUFRO21IQUhqQixrQkFBa0IsY0FETixNQUFNOzs0RkFDbEIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7MEJBSWpCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi91dGlsL2tleSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1N0YWNrU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIF9kaWFsb2dTdGFjazogRGlhbG9nQ29tcG9uZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogYW55KSB7XG4gICAgdGhpcy5fZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChlLmtleUNvZGUgPT09IEtleS5Fc2NhcGUpIHtcbiAgICAgICAgdGhpcy5jbG9zZVRvcE1vc3REaWFsb2coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZURpYWxvZyhkaWFsb2c6IERpYWxvZ0NvbXBvbmVudCkge1xuICAgIGNvbnN0IGluZGV4ID0gRGlhbG9nU3RhY2tTZXJ2aWNlLl9kaWFsb2dTdGFjay5pbmRleE9mKGRpYWxvZyk7XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgRGlhbG9nU3RhY2tTZXJ2aWNlLl9kaWFsb2dTdGFjay5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgYWRkRGlhbG9nKGRpYWxvZzogRGlhbG9nQ29tcG9uZW50KSB7XG4gICAgY29uc3QgaW5kZXggPSBEaWFsb2dTdGFja1NlcnZpY2UuX2RpYWxvZ1N0YWNrLmluZGV4T2YoZGlhbG9nKTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBEaWFsb2dTdGFja1NlcnZpY2UuX2RpYWxvZ1N0YWNrLnVuc2hpZnQoZGlhbG9nKTtcbiAgfVxuXG4gIGFkZChkaWFsb2c6IERpYWxvZ0NvbXBvbmVudCkge1xuXG4gICAgaWYgKGRpYWxvZy5zaG93KSB7XG4gICAgICB0aGlzLmFkZERpYWxvZyhkaWFsb2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaWFsb2cuc2hvd0NoYW5nZVxuICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAuc3Vic2NyaWJlKHNob3cgPT4ge1xuICAgICAgICAgIGlmIChzaG93KSB7XG4gICAgICAgICAgICB0aGlzLmFkZERpYWxvZyhkaWFsb2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGlhbG9nLmFmdGVyQ2xvc2VcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVtb3ZlRGlhbG9nKGRpYWxvZykpO1xuXG4gICAgRGlhbG9nU3RhY2tTZXJ2aWNlLl9kaWFsb2dTdGFjay51bnNoaWZ0KGRpYWxvZyk7XG4gIH1cblxuICBjbG9zZVRvcE1vc3REaWFsb2coKSB7XG4gICAgZm9yIChjb25zdCBkaWFsb2cgb2YgRGlhbG9nU3RhY2tTZXJ2aWNlLl9kaWFsb2dTdGFjaykge1xuICAgICAgaWYgKGRpYWxvZy5fZGlhbG9nQ29uZmlnICYmIGRpYWxvZy5fZGlhbG9nQ29uZmlnLmNsb3NlT25Fc2MpIHtcbiAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19