@wavemaker/app-ng-runtime 11.11.5-rc.6185 → 11.11.6-rc.216
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/base/bundles/index.umd.js +11 -1
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +12 -2
- package/components/base/fesm2022/index.mjs +11 -1
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/bundles/index.umd.js +2 -2
- package/components/basic/search/esm2022/search.component.mjs +3 -3
- package/components/basic/search/fesm2022/index.mjs +2 -2
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +3 -1
- package/components/data/pagination/esm2022/pagination.component.mjs +4 -2
- package/components/data/pagination/fesm2022/index.mjs +3 -1
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +1 -1
- package/components/data/table/esm2022/table-filter.directive.mjs +2 -2
- package/components/data/table/fesm2022/index.mjs +1 -1
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/base-dialog.d.ts +1 -0
- package/components/dialogs/default/bundles/index.umd.js +15 -29
- package/components/dialogs/default/esm2022/base-dialog.mjs +9 -23
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +4 -5
- package/components/dialogs/default/fesm2022/index.mjs +11 -26
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +28 -12
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +29 -13
- package/components/dialogs/design-dialog/fesm2022/index.mjs +28 -12
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +33 -16
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +32 -15
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +31 -14
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/datatable/datatable.js +1 -0
|
@@ -12,6 +12,7 @@ export declare abstract class BaseDialog extends BaseComponent implements IDialo
|
|
|
12
12
|
titleId: string;
|
|
13
13
|
sheet: string | boolean;
|
|
14
14
|
sheetPosition: string;
|
|
15
|
+
private dialogOriginFocusStack;
|
|
15
16
|
protected constructor(inj: Injector, config: IWidgetConfig, modalOptions: ModalOptions, explicitContext: any);
|
|
16
17
|
/**
|
|
17
18
|
* Opens the dialog
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('ngx-bootstrap/modal'), require('@wm/core'), require('@wm/components/base'), require('@angular/common'), require('@angular/router')
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', 'ngx-bootstrap/modal', '@wm/core', '@wm/components/base', '@angular/common', '@angular/router'
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.dialogs = {}), global.ng.core, global.modal, global.wm.core, global.wm.components.base, global.ng.common, global.ng.router
|
|
5
|
-
})(this, (function (exports, i0, i1, core, i2, i1$1, router
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('ngx-bootstrap/modal'), require('@wm/core'), require('@wm/components/base'), require('@angular/common'), require('@angular/router')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', 'ngx-bootstrap/modal', '@wm/core', '@wm/components/base', '@angular/common', '@angular/router'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.dialogs = {}), global.ng.core, global.modal, global.wm.core, global.wm.components.base, global.ng.common, global.ng.router));
|
|
5
|
+
})(this, (function (exports, i0, i1, core, i2, i1$1, router) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
var n = Object.create(null);
|
|
@@ -132,9 +132,6 @@
|
|
|
132
132
|
}, {
|
|
133
133
|
type: i0.Optional
|
|
134
134
|
}] }], null); })();
|
|
135
|
-
const focusTrapObj = {
|
|
136
|
-
activeElement: null
|
|
137
|
-
};
|
|
138
135
|
const invokeOpenedCallback = (ref) => {
|
|
139
136
|
if (ref) {
|
|
140
137
|
setTimeout(() => {
|
|
@@ -144,19 +141,12 @@
|
|
|
144
141
|
$('body > modal-container > div').wrap('<' + root + '/>');
|
|
145
142
|
}
|
|
146
143
|
ref.invokeEventCallback('opened', { $event: { type: 'opened' } });
|
|
147
|
-
//
|
|
144
|
+
// Focusing the first focusable element when the dialog is opened
|
|
148
145
|
const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];
|
|
149
146
|
const keyboardFocusableElements = [container.querySelectorAll('a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex="-1"])')].filter(el => {
|
|
150
147
|
return (!el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'));
|
|
151
148
|
})[0];
|
|
152
149
|
$(keyboardFocusableElements[0]).focus();
|
|
153
|
-
focusTrapObj[ref.titleId] = focusTrap.createFocusTrap(container, {
|
|
154
|
-
onActivate: () => container.classList.add('is-active'),
|
|
155
|
-
onDeactivate: () => container.classList.remove('is-active'),
|
|
156
|
-
allowOutsideClick: true,
|
|
157
|
-
setReturnFocus: focusTrapObj.activeElement,
|
|
158
|
-
});
|
|
159
|
-
focusTrapObj[ref.titleId].activate();
|
|
160
150
|
const openedDialogs = ref.dialogService.getOpenedDialogs();
|
|
161
151
|
if (openedDialogs.length > 1) {
|
|
162
152
|
let zIndex = Number($("[aria-labelledby= " + openedDialogs[openedDialogs.length - 2].titleId + "]").css('z-index'));
|
|
@@ -182,6 +172,7 @@
|
|
|
182
172
|
super(inj, config, explicitContext);
|
|
183
173
|
this.modalOptions = modalOptions;
|
|
184
174
|
this.titleId = 'wmdialog-' + core.generateGUId();
|
|
175
|
+
this.dialogOriginFocusStack = [];
|
|
185
176
|
this.dialogService = inj.get(core.AbstractDialogService);
|
|
186
177
|
this.bsModal = inj.get(i1.BsModalService);
|
|
187
178
|
const router$1 = inj.get(router.Router);
|
|
@@ -194,9 +185,7 @@
|
|
|
194
185
|
this.dialogId = id;
|
|
195
186
|
}
|
|
196
187
|
}),
|
|
197
|
-
this.bsModal.onShow.subscribe(() => {
|
|
198
|
-
focusTrapObj.activeElement = document.activeElement;
|
|
199
|
-
}),
|
|
188
|
+
this.bsModal.onShow.subscribe(() => { }),
|
|
200
189
|
this.bsModal.onHidden.subscribe((closeReason) => {
|
|
201
190
|
let ref = this.dialogService.getDialogRefFromClosedDialogs();
|
|
202
191
|
if (this.dialogId && closeReason?.id === this.dialogId) {
|
|
@@ -216,13 +205,7 @@
|
|
|
216
205
|
}
|
|
217
206
|
}
|
|
218
207
|
}),
|
|
219
|
-
this.bsModal.onHide.subscribe(() => {
|
|
220
|
-
// Will de-activate focus trap for the respective dialog when they are closed.
|
|
221
|
-
const ref = this.dialogService.getDialogRefFromClosedDialogs();
|
|
222
|
-
if (ref && focusTrapObj[ref.titleId] !== undefined) {
|
|
223
|
-
focusTrapObj[ref.titleId].deactivate();
|
|
224
|
-
}
|
|
225
|
-
}),
|
|
208
|
+
this.bsModal.onHide.subscribe(() => { }),
|
|
226
209
|
router$1.events.subscribe(e => {
|
|
227
210
|
if (e instanceof router.NavigationEnd) {
|
|
228
211
|
this.close();
|
|
@@ -253,6 +236,7 @@
|
|
|
253
236
|
// extend the context with the initState
|
|
254
237
|
Object.assign(this.context, initState);
|
|
255
238
|
this.modalOptions.ariaLabelledBy = this.titleId;
|
|
239
|
+
this.dialogOriginFocusStack.push(document.activeElement);
|
|
256
240
|
this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
|
|
257
241
|
// Fix for [WMS-23948]: Focus moving out of active Dialog widget
|
|
258
242
|
if (this.dialogService.getOpenedDialogs().length === 1 && (core.isMobile())) {
|
|
@@ -269,8 +253,11 @@
|
|
|
269
253
|
// remove the popovers in the page to avoid the overlap with dialog
|
|
270
254
|
// closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)
|
|
271
255
|
if (this.dialogRef) {
|
|
256
|
+
const lastDialogOrigin = this.dialogOriginFocusStack.pop();
|
|
272
257
|
this.dialogService.addToClosedDialogs(this);
|
|
273
258
|
this.dialogRef.hide();
|
|
259
|
+
// Return focus to the originating element upon dialog closure
|
|
260
|
+
lastDialogOrigin?.focus();
|
|
274
261
|
}
|
|
275
262
|
}
|
|
276
263
|
/**
|
|
@@ -331,8 +318,7 @@
|
|
|
331
318
|
i0__namespace.ɵɵelementEnd();
|
|
332
319
|
} if (rf & 2) {
|
|
333
320
|
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
|
334
|
-
i0__namespace.ɵɵ
|
|
335
|
-
i0__namespace.ɵɵattribute("aria-label", "Close " + (ctx_r1.title ? ctx_r1.title : "") + " dialog");
|
|
321
|
+
i0__namespace.ɵɵattribute("aria-label", "Close " + (ctx_r1.title ? ctx_r1.title : "") + " dialog")("title", ctx_r1.title ? "Close " + ctx_r1.title + " dialog" : ctx_r1.dialogRef.appLocale.LABEL_CLOSE);
|
|
336
322
|
} }
|
|
337
323
|
function DialogHeaderComponent_Case_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
338
324
|
i0__namespace.ɵɵelementContainer(0);
|
|
@@ -476,7 +462,7 @@
|
|
|
476
462
|
this.dialogRef.close();
|
|
477
463
|
}
|
|
478
464
|
static { this.ɵfac = function DialogHeaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DialogHeaderComponent)(i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵdirectiveInject(i2.DialogRef)); }; }
|
|
479
|
-
static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: DialogHeaderComponent, selectors: [["div", "wmDialogHeader", ""]], inputs: { iconwidth: "iconwidth", iconheight: "iconheight", iconmargin: "iconmargin", iconclass: "iconclass", iconurl: "iconurl", closable: "closable", heading: "heading", headinglevel: "headinglevel", subheading: "subheading", titleid: "titleid", title: "title" }, standalone: true, features: [i0__namespace.ɵɵStandaloneFeature], attrs: _c0, decls: 10, vars: 2, consts: [["headerTemplate", ""], [1, "app-dialog-close", "close"
|
|
465
|
+
static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: DialogHeaderComponent, selectors: [["div", "wmDialogHeader", ""]], inputs: { iconwidth: "iconwidth", iconheight: "iconheight", iconmargin: "iconmargin", iconclass: "iconclass", iconurl: "iconurl", closable: "closable", heading: "heading", headinglevel: "headinglevel", subheading: "subheading", titleid: "titleid", title: "title" }, standalone: true, features: [i0__namespace.ɵɵStandaloneFeature], attrs: _c0, decls: 10, vars: 2, consts: [["headerTemplate", ""], [1, "app-dialog-close", "close"], [1, "app-dialog-title", "modal-title"], [1, "app-dialog-close", "close", 3, "click"], ["aria-hidden", "true", 1, "app-icon", "wi", "wi-clear"], [4, "ngTemplateOutlet"], [3, "ngClass", "ngStyle"], ["data-identifier", "img", 3, "src", "ngStyle"], [1, "dialog-heading", 3, "textContent", "id"], [1, "dialog-sub-heading", 3, "title", "textContent"]], template: function DialogHeaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
480
466
|
i0__namespace.ɵɵtemplate(0, DialogHeaderComponent_Conditional_0_Template, 2, 2, "button", 1)(1, DialogHeaderComponent_Case_1_Template, 2, 1, "h1", 2)(2, DialogHeaderComponent_Case_2_Template, 2, 1, "h2", 2)(3, DialogHeaderComponent_Case_3_Template, 2, 1, "h3", 2)(4, DialogHeaderComponent_Case_4_Template, 2, 1, "h4", 2)(5, DialogHeaderComponent_Case_5_Template, 2, 1, "h5", 2)(6, DialogHeaderComponent_Case_6_Template, 2, 1, "h6", 2)(7, DialogHeaderComponent_Case_7_Template, 2, 1, "h4", 2)(8, DialogHeaderComponent_ng_template_8_Template, 4, 5, "ng-template", null, 0, i0__namespace.ɵɵtemplateRefExtractor);
|
|
481
467
|
} if (rf & 2) {
|
|
482
468
|
let tmp_2_0;
|
|
@@ -487,7 +473,7 @@
|
|
|
487
473
|
}
|
|
488
474
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(DialogHeaderComponent, [{
|
|
489
475
|
type: i0.Component,
|
|
490
|
-
args: [{ standalone: true, imports: [i1$1.CommonModule, i2.WmComponentsModule], selector: 'div[wmDialogHeader]', template: "@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" title=\"
|
|
476
|
+
args: [{ standalone: true, imports: [i1$1.CommonModule, i2.WmComponentsModule], selector: 'div[wmDialogHeader]', template: "@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" [attr.title]=\"title ? 'Close ' + title + ' dialog' : dialogRef.appLocale.LABEL_CLOSE\" >\n <span class=\"app-icon wi wi-clear\" aria-hidden=\"true\"></span>\n </button>\n}\n\n@switch (headinglevel) {\n @case ('h1') {\n <h1 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h6>\n }\n @default {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n}\n\n<ng-template #headerTemplate>\n @if (iconclass && !iconurl) {\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"></i>\n }\n @if (iconurl) {\n <img data-identifier=\"img\" [src]=\"iconurl | image\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"/>\n }\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n @if (subheading) {\n <span class=\"dialog-sub-heading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n }\n</ng-template>\n" }]
|
|
491
477
|
}], () => [{ type: i0__namespace.ElementRef }, { type: BaseDialog, decorators: [{
|
|
492
478
|
type: i0.Inject,
|
|
493
479
|
args: [i2.DialogRef]
|
|
@@ -3,13 +3,9 @@ import { NavigationEnd, Router } from '@angular/router';
|
|
|
3
3
|
import { BsModalService, ModalOptions } from 'ngx-bootstrap/modal';
|
|
4
4
|
import { AbstractDialogService, findRootContainer, generateGUId, isMobile } from '@wm/core';
|
|
5
5
|
import { BaseComponent, WidgetConfig } from '@wm/components/base';
|
|
6
|
-
import { createFocusTrap } from '@wavemaker/focus-trap';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "ngx-bootstrap/modal";
|
|
9
8
|
const eventsRegistered = false;
|
|
10
|
-
const focusTrapObj = {
|
|
11
|
-
activeElement: null
|
|
12
|
-
};
|
|
13
9
|
const invokeOpenedCallback = (ref) => {
|
|
14
10
|
if (ref) {
|
|
15
11
|
setTimeout(() => {
|
|
@@ -19,19 +15,12 @@ const invokeOpenedCallback = (ref) => {
|
|
|
19
15
|
$('body > modal-container > div').wrap('<' + root + '/>');
|
|
20
16
|
}
|
|
21
17
|
ref.invokeEventCallback('opened', { $event: { type: 'opened' } });
|
|
22
|
-
//
|
|
18
|
+
// Focusing the first focusable element when the dialog is opened
|
|
23
19
|
const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];
|
|
24
20
|
const keyboardFocusableElements = [container.querySelectorAll('a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex="-1"])')].filter(el => {
|
|
25
21
|
return (!el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'));
|
|
26
22
|
})[0];
|
|
27
23
|
$(keyboardFocusableElements[0]).focus();
|
|
28
|
-
focusTrapObj[ref.titleId] = createFocusTrap(container, {
|
|
29
|
-
onActivate: () => container.classList.add('is-active'),
|
|
30
|
-
onDeactivate: () => container.classList.remove('is-active'),
|
|
31
|
-
allowOutsideClick: true,
|
|
32
|
-
setReturnFocus: focusTrapObj.activeElement,
|
|
33
|
-
});
|
|
34
|
-
focusTrapObj[ref.titleId].activate();
|
|
35
24
|
const openedDialogs = ref.dialogService.getOpenedDialogs();
|
|
36
25
|
if (openedDialogs.length > 1) {
|
|
37
26
|
let zIndex = Number($("[aria-labelledby= " + openedDialogs[openedDialogs.length - 2].titleId + "]").css('z-index'));
|
|
@@ -57,6 +46,7 @@ export class BaseDialog extends BaseComponent {
|
|
|
57
46
|
super(inj, config, explicitContext);
|
|
58
47
|
this.modalOptions = modalOptions;
|
|
59
48
|
this.titleId = 'wmdialog-' + generateGUId();
|
|
49
|
+
this.dialogOriginFocusStack = [];
|
|
60
50
|
this.dialogService = inj.get(AbstractDialogService);
|
|
61
51
|
this.bsModal = inj.get(BsModalService);
|
|
62
52
|
const router = inj.get(Router);
|
|
@@ -69,9 +59,7 @@ export class BaseDialog extends BaseComponent {
|
|
|
69
59
|
this.dialogId = id;
|
|
70
60
|
}
|
|
71
61
|
}),
|
|
72
|
-
this.bsModal.onShow.subscribe(() => {
|
|
73
|
-
focusTrapObj.activeElement = document.activeElement;
|
|
74
|
-
}),
|
|
62
|
+
this.bsModal.onShow.subscribe(() => { }),
|
|
75
63
|
this.bsModal.onHidden.subscribe((closeReason) => {
|
|
76
64
|
let ref = this.dialogService.getDialogRefFromClosedDialogs();
|
|
77
65
|
if (this.dialogId && closeReason?.id === this.dialogId) {
|
|
@@ -91,13 +79,7 @@ export class BaseDialog extends BaseComponent {
|
|
|
91
79
|
}
|
|
92
80
|
}
|
|
93
81
|
}),
|
|
94
|
-
this.bsModal.onHide.subscribe(() => {
|
|
95
|
-
// Will de-activate focus trap for the respective dialog when they are closed.
|
|
96
|
-
const ref = this.dialogService.getDialogRefFromClosedDialogs();
|
|
97
|
-
if (ref && focusTrapObj[ref.titleId] !== undefined) {
|
|
98
|
-
focusTrapObj[ref.titleId].deactivate();
|
|
99
|
-
}
|
|
100
|
-
}),
|
|
82
|
+
this.bsModal.onHide.subscribe(() => { }),
|
|
101
83
|
router.events.subscribe(e => {
|
|
102
84
|
if (e instanceof NavigationEnd) {
|
|
103
85
|
this.close();
|
|
@@ -128,6 +110,7 @@ export class BaseDialog extends BaseComponent {
|
|
|
128
110
|
// extend the context with the initState
|
|
129
111
|
Object.assign(this.context, initState);
|
|
130
112
|
this.modalOptions.ariaLabelledBy = this.titleId;
|
|
113
|
+
this.dialogOriginFocusStack.push(document.activeElement);
|
|
131
114
|
this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
|
|
132
115
|
// Fix for [WMS-23948]: Focus moving out of active Dialog widget
|
|
133
116
|
if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile())) {
|
|
@@ -144,8 +127,11 @@ export class BaseDialog extends BaseComponent {
|
|
|
144
127
|
// remove the popovers in the page to avoid the overlap with dialog
|
|
145
128
|
// closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)
|
|
146
129
|
if (this.dialogRef) {
|
|
130
|
+
const lastDialogOrigin = this.dialogOriginFocusStack.pop();
|
|
147
131
|
this.dialogService.addToClosedDialogs(this);
|
|
148
132
|
this.dialogRef.hide();
|
|
133
|
+
// Return focus to the originating element upon dialog closure
|
|
134
|
+
lastDialogOrigin?.focus();
|
|
149
135
|
}
|
|
150
136
|
}
|
|
151
137
|
/**
|
|
@@ -195,4 +181,4 @@ export class BaseDialog extends BaseComponent {
|
|
|
195
181
|
}, {
|
|
196
182
|
type: Optional
|
|
197
183
|
}] }], null); })();
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9iYXNlLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFjLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBeUIsTUFBTSxVQUFVLENBQUM7QUFFbkgsT0FBTyxFQUFFLGFBQWEsRUFBMEIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFFeEQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFFL0IsTUFBTSxZQUFZLEdBQUc7SUFDakIsYUFBYSxFQUFFLElBQUk7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUNqQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ04sVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QywyRkFBMkY7WUFDM0YsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsR0FBRyxDQUFDLG1C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LENBQUM7SUFDcEQsQ0FBQztJQVNTLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUNyRCw4QkFBOEI7UUFDOUIsb0VBQW9FO1FBQ3BFLElBQUksR0FBRyxLQUFLLE9BQU8sSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1gsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUMxRSxDQUFDO1FBQ0wsQ0FBQztRQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7MkdBaEtpQixVQUFVLHdDQWdCaEIsWUFBWSw2Q0FFWixrQkFBa0I7dUVBbEJaLFVBQVUsV0FBVixVQUFVOztpRkFBVixVQUFVO2NBRC9CLFVBQVU7O3NCQWlCRixNQUFNO3VCQUFDLFlBQVk7O3NCQUVuQixNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBmaW5kUm9vdENvbnRhaW5lciwgZ2VuZXJhdGVHVUlkLCBpc01vYmlsZSwgZ2V0U2hlZXRQb3NpdGlvbkNsYXNzIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBJRGlhbG9nLCBJV2lkZ2V0Q29uZmlnLCBXaWRnZXRDb25maWcgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IGNyZWF0ZUZvY3VzVHJhcCB9IGZyb20gJ0B3YXZlbWFrZXIvZm9jdXMtdHJhcCc7XG5cbmNvbnN0IGV2ZW50c1JlZ2lzdGVyZWQgPSBmYWxzZTtcblxuY29uc3QgZm9jdXNUcmFwT2JqID0ge1xuICAgIGFjdGl2ZUVsZW1lbnQ6IG51bGxcbn07XG5cbmNvbnN0IGludm9rZU9wZW5lZENhbGxiYWNrID0gKHJlZikgPT4ge1xuICAgIGlmIChyZWYpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb290ID0gZmluZFJvb3RDb250YWluZXIocmVmLiRlbGVtZW50KTtcbiAgICAgICAgICAgIC8vIGlmIHBhZ2Ugc3R5bGVzIGhhdmUgdG8gYmUgYXBwbGllZCB0byBkaWFsb2cgdGhlbiBkaWFsb2cgaGFzIHRvIGJlIGNoaWxkIG9mIHBhZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgICAgICAgJCgnYm9keSA+IG1vZGFsLWNvbnRhaW5lciA+IGRpdicpLndyYXAoJzwnICsgcm9vdCArICcvPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmLmludm9rZUV2ZW50Q2FsbGJhY2soJ29wZW5lZCcsIHsgJGV2ZW50OiB7IHR5cGU6ICdvcGVuZWQnIH0gfSk7XG4gICAgICAgICAgICAvLyBmb2N1c1RyYXBPYmogd2lsbCBjcmVhdGUgZm9jdXMgdHJhcCBmb3IgdGhlIHJlc3BlY3RpdmUgZGlhbG9nIGFjY29yZGluZyB0byB0aGUgdGl0bGVJZCBhc3NpZ25lZCB0byB0aGVtIHdoaWNoIGlzIHVuaXF1ZS5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9ICQoJ1thcmlhLWxhYmVsbGVkYnk9ICcgKyByZWYudGl0bGVJZCArICddJylbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHMgPSBbY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAgICAgJ2EsIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsIGlmcmFtZSwgZW1iZWQsIG9iamVjdCwgc3VtbWFyeSBkaWFsb2csIGF1ZGlvW2NvbnRyb2xzXSwgdmlkZW9bY29udHJvbHNdLCBbY29udGVudGVkaXRhYmxlXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICAgICAgICAgKV0uZmlsdGVyKGVsID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAhZWxbMF0uaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmICFlbFswXS5oYXNBdHRyaWJ1dGUoJ2hpZGRlbicpKTtcbiAgICAgICAgICAgIH0pWzBdO1xuXG4gICAgICAgICAgICAkKGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNbMF0pLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0gPSBjcmVhdGVGb2N1c1RyYXAoY29udGFpbmVyLCB7XG4gICAgICAgICAgICAgICAgb25BY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldFJldHVybkZvY3VzOiBmb2N1c1RyYXBPYmouYWN0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5hY3RpdmF0ZSgpO1xuICAgICAgICAgICAgY29uc3Qgb3BlbmVkRGlhbG9ncyA9IHJlZi5kaWFsb2dTZXJ2aWNlLmdldE9wZW5lZERpYWxvZ3MoKTtcbiAgICAgICAgICAgIGlmIChvcGVuZWREaWFsb2dzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgekluZGV4ID0gTnVtYmVyKCQoXCJbYXJpYS1sYWJlbGxlZGJ5PSBcIiArIG9wZW5lZERpYWxvZ3Nbb3BlbmVkRGlhbG9ncy5sZW5ndGggLSAyXS50aXRsZUlkICsgXCJdXCIpLmNzcygnei1pbmRleCcpKTtcbiAgICAgICAgICAgICAgICAkKCdbYXJpYS1sYWJlbGxlZGJ5PSAnICsgcmVmLmRpYWxvZ1NlcnZpY2UuZ2V0TGFzdE9wZW5lZERpYWxvZygpLnRpdGxlSWQgKyAnXScpLmNzcygnei1pbmRleCcsIHpJbmRleCArIDIpO1xuICAgICAgICAgICAgICAgICQoJ2JzLW1vZGFsLWJhY2tkcm9wJykuY3NzKCd6LWluZGV4JywgekluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbmNvbnN0IGludm9rZUNsb3NlZENhbGxiYWNrID0gKHJlZikgPT4ge1xuICAgIGlmIChyZWYpIHtcbiAgICAgICAgcmVmLmludm9rZUV2ZW50Q2FsbGJhY2soJ2Nsb3NlJyk7XG4gICAgICAgIHJlZi5kaWFsb2dSZWYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG9wZW5lZERpYWxvZ3MgPSByZWYuZGlhbG9nU2VydmljZS5nZXRPcGVuZWREaWFsb2dzKCk7XG4gICAgICAgIGlmIChvcGVuZWREaWFsb2dzLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICBsZXQgekluZGV4OiBhbnkgPSBOdW1iZXIoJChcIlthcmlhLWxhYmVsbGVkYnk9IFwiICsgb3BlbmVkRGlhbG9nc1tvcGVuZWREaWFsb2dzLmxlbmd0aCAtIDFdLnRpdGxlSWQgKyBcIl1cIikuY3NzKCd6LWluZGV4JykpO1xuICAgICAgICAgICAgJCgnYnMtbW9kYWwtYmFja2Ryb3AnKS5jc3MoJ3otaW5kZXgnLCB6SW5kZXggLSAxKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRGlhbG9nIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElEaWFsb2csIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBic01vZGFsOiBCc01vZGFsU2VydmljZTtcblxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBCc01vZGFsUmVmO1xuICAgIHByaXZhdGUgZGlhbG9nSWQ6IG51bWJlcjtcbiAgICBwdWJsaWMgdGl0bGVJZDogc3RyaW5nID0gJ3dtZGlhbG9nLScgKyBnZW5lcmF0ZUdVSWQoKTtcbiAgICBwdWJsaWMgc2hlZXQ6IHN0cmluZyB8IGJvb2xlYW47XG4gICAgcHVibGljIHNoZWV0UG9zaXRpb246IHN0cmluZztcblxuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFdpZGdldENvbmZpZykgY29uZmlnOiBJV2lkZ2V0Q29uZmlnLFxuICAgICAgICBwcm90ZWN0ZWQgbW9kYWxPcHRpb25zOiBNb2RhbE9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIGNvbmZpZywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gaW5qLmdldChBYnN0cmFjdERpYWxvZ1NlcnZpY2UpO1xuICAgICAgICB0aGlzLmJzTW9kYWwgPSBpbmouZ2V0KEJzTW9kYWxTZXJ2aWNlKTtcbiAgICAgICAgY29uc3Qgcm91dGVyID0gaW5qLmdldChSb3V0ZXIpO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW1xuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uU2hvd24uc3Vic2NyaWJlKCh7IGlkIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0TGFzdE9wZW5lZERpYWxvZygpO1xuICAgICAgICAgICAgICAgIGlmIChyZWYgPT09IHRoaXMgJiYgIXRoaXMuZGlhbG9nSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIGdldCB0aGUgcmVmZXJlbmNlIG9mIGxhc3QgcHVzaGVkIGRpYWxvZyBpbiB0aGUgYXJyYXkgZm9yIGNhbGxpbmcgb25PcGVuIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIGludm9rZU9wZW5lZENhbGxiYWNrKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nSWQgPSBpZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vblNob3cuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBmb2N1c1RyYXBPYmouYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vbkhpZGRlbi5zdWJzY3JpYmUoKGNsb3NlUmVhc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXREaWFsb2dSZWZGcm9tQ2xvc2VkRGlhbG9ncygpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0lkICYmIGNsb3NlUmVhc29uPy5pZCA9PT0gdGhpcy5kaWFsb2dJZCkge1xuICAgICAgICAgICAgICAgICAgICByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xvc2VSZWFzb24gPT09ICdlc2MnIHx8IGNsb3NlUmVhc29uID09PSAnYmFja2Ryb3AtY2xpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRMYXN0T3BlbmVkRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZWYgPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZGlhbG9nIHJlZmVyZW5jZSBmcm9tIG9wZW5lZCBkaWFsb2dzIGFuZCBjbG9zZWQgZGlhbG9nc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbU9wZW5lZERpYWxvZ3MocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIGludm9rZUNsb3NlZENhbGxiYWNrKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWYuY2xvc2VDYWxsQmFja0ZuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWYuY2xvc2VDYWxsQmFja0ZuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vbkhpZGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgV2lsbCBkZS1hY3RpdmF0ZSBmb2N1cyB0cmFwIGZvciB0aGUgcmVzcGVjdGl2ZSBkaWFsb2cgd2hlbiB0aGV5IGFyZSBjbG9zZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiAmJiBmb2N1c1RyYXBPYmpbcmVmLnRpdGxlSWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gey8vIHJlbW92ZSB0aGUgZGlhbG9nIHJlZmVyZW5jZSBmcm9tIG9wZW5lZCBkaWFsb2dzIGFuZCBjbG9zZWQgZGlhbG9nc1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21PcGVuZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGRpYWxvZ1xuICAgICAqIFN1YnNjcmliZSB0byB0aGUgb25TaG93biBldmVudCBlbWl0dGVyIG9mIGJzTW9kYWwgYW5kIHRyaWdnZXIgb24tb3BlbmVkIGV2ZW50IGNhbGxiYWNrXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oaW5pdFN0YXRlPzogYW55KSB7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BvdmVycyBpbiB0aGUgcGFnZSB0byBhdm9pZCB0aGUgb3ZlcmxhcCB3aXRoIGRpYWxvZ1xuICAgICAgICAvLyBjbG9zZVBvcG92ZXIodGhpcy4kZWxlbWVudCk7IENvbW1lbnRpbmcgdGhpcyBsaW5lIGJlY2F1c2UgaXQgaXMgY2F1c2luZyByZWdyZXNzaW9uKGlmIHdlIGhhdmUgZGlhbG9nIGluc2lkZSBwb3BvdmVyIGFzIHBhcnRhaWwgY29udGVudCwgdGhlbiB0aGUgZGlhbG9nIGNsb3NlIGlzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb24gY2xvc2luZyB0aGUgcG9wb3ZlciB0aGUgcGFydGlhbCBnZXQgZGVzdHJveWVkLilcblxuICAgICAgICAvLyBkbyBub3Qgb3BlbiB0aGUgZGlhbG9nIGFnYWluIGlmIGl0IGlzIGFscmVhZHkgb3BlbmVkXG4gICAgICAgIGNvbnN0IGR1cGxpY2F0ZURpYWxvZ0NoZWNrID0gKG9wZW5lZERpYWxvZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9wZW5lZERpYWxvZyA9PT0gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTZXJ2aWNlLmdldE9wZW5lZERpYWxvZ3MoKS5zb21lKGR1cGxpY2F0ZURpYWxvZ0NoZWNrKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZFRvT3BlbmVkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgLy8gZXh0ZW5kIHRoZSBjb250ZXh0IHdpdGggdGhlIGluaXRTdGF0ZVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwgaW5pdFN0YXRlKTtcbiAgICAgICAgdGhpcy5tb2RhbE9wdGlvbnMuYXJpYUxhYmVsbGVkQnkgPSB0aGlzLnRpdGxlSWQ7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5ic01vZGFsLnNob3codGhpcy5nZXRUZW1wbGF0ZVJlZigpLCB0aGlzLm1vZGFsT3B0aW9ucyk7XG4gICAgICAgIC8vIEZpeCBmb3IgW1dNUy0yMzk0OF06IEZvY3VzIG1vdmluZyBvdXQgb2YgYWN0aXZlIERpYWxvZyB3aWRnZXRcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nU2VydmljZS5nZXRPcGVuZWREaWFsb2dzKCkubGVuZ3RoID09PSAxICYmIChpc01vYmlsZSgpKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50U2VsZWN0b3IgPSAkKCdib2R5ID4gYXBwLXJvb3QnKVswXTtcbiAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgICQoJy5jZGstZm9jdXMtdHJhcC1hbmNob3InKS5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsb3NlcyB0aGUgZGlhbG9nXG4gICAgICogaW52b2tlcyB0aGUgb24tY2xvc2UgZXZlbnQgY2FsbGJhY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcG9wb3ZlcnMgaW4gdGhlIHBhZ2UgdG8gYXZvaWQgdGhlIG92ZXJsYXAgd2l0aCBkaWFsb2dcbiAgICAgICAgLy8gY2xvc2VQb3BvdmVyKHRoaXMuJGVsZW1lbnQpOyBDb21tZW50aW5nIHRoaXMgbGluZSBiZWNhdXNlIGl0IGlzIGNhdXNpbmcgcmVncmVzc2lvbihpZiB3ZSBoYXZlIGRpYWxvZyBpbnNpZGUgcG9wb3ZlciBhcyBwYXJ0YWlsIGNvbnRlbnQsIHRoZW4gdGhlIGRpYWxvZyBjbG9zZSBpcyBub3Qgd29ya2luZyBiZWNhdXNlIG9uIGNsb3NpbmcgdGhlIHBvcG92ZXIgdGhlIHBhcnRpYWwgZ2V0IGRlc3Ryb3llZC4pXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZFRvQ2xvc2VkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSBkaWFsb2cgd2l0aCB0aGUgZGlhbG9nIHNlcnZpY2UgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3NcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXIoc2NvcGUpIHtcbiAgICAgICAgLy8gYWRkIHNjb3BlIGFsb25nIHdpdGggbmFtZSBpbiB0aGUgZGlhbG9nUmVmc0NvbGxlY3Rpb24gTWFwIHdoaWxlIHJlZ2lzdGVyaW5nIGRpYWxvZ1xuICAgICAgICAvLyBTbyB0aGF0IDIgZGlhbG9ncyBoYXZpbmcgc2FtZSBuYW1lIG9uIGRpZmZlcmVudCBwYWdlcyB3b24ndCBiZSBvdmVycmlkZGVuLlxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVnaXN0ZXIodGhpcy5uYW1lLCB0aGlzLCBzY29wZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGUgUmVnaXN0ZXIgdGhlIGRpYWxvZyB3aXRoIHRoZSBkaWFsb2cgc2VydmljZSBhZnRlciBkaWFsb2cgZGVzdHJ1Y3Rpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGVSZWdpc3RlcihzY29wZSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGVSZWdpc3Rlcih0aGlzLm5hbWUsIHNjb3BlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzdWJjbGFzc2VzIG9mIEJhc2VEaWFsb2cgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSBwcm9wZXIgdGVtcGxhdGUgZWxlbWVudCByZWZcbiAgICAgKiBic01vZGFsIHdpbGwgdXNlIHRoaXMgcmVmZW5jZSB0byBvcGVuIHRoZSBkaWFsb2dcbiAgICAgKiBAcmV0dXJucyB7VGVtcGxhdGVSZWY8YW55Pn1cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VGVtcGxhdGVSZWYoKTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByb3RlY3RlZCBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICAvLyBpZ25vcmUgdGhlIGNsYXNzIGF0dHJpYnV0ZS5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgZnJhbWV3b3JrIGZyb20gc2V0dGluZyB0aGUgY2xhc3Mgb24gdGhlIGhvc3QgZWxlbWVudC5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICduYW1lJyB8fCBrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhbmltYXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcyA9IHRoaXMubW9kYWxPcHRpb25zLmNsYXNzLnJlcGxhY2UoJyBhbmltYXRlZCAnICsgb3YsICcnKTtcbiAgICAgICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmNsYXNzID0gdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MgKyAnIGFuaW1hdGVkICcgKyBudjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5kZVJlZ2lzdGVyKHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9iYXNlLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFjLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBeUIsTUFBTSxVQUFVLENBQUM7QUFFbkgsT0FBTyxFQUFFLGFBQWEsRUFBMEIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUUxRixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUUvQixNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDakMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsMkZBQTJGO1lBQzNGLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLGlFQUFpRTtZQUNqRSxN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R0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzJHQTVKaUIsVUFBVSx3Q0FnQmhCLFlBQVksNkNBRVosa0JBQWtCO3VFQWxCWixVQUFVLFdBQVYsVUFBVTs7aUZBQVYsVUFBVTtjQUQvQixVQUFVOztzQkFpQkYsTUFBTTt1QkFBQyxZQUFZOztzQkFFbkIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJzTW9kYWxSZWYsIEJzTW9kYWxTZXJ2aWNlLCBNb2RhbE9wdGlvbnMgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFic3RyYWN0RGlhbG9nU2VydmljZSwgZmluZFJvb3RDb250YWluZXIsIGdlbmVyYXRlR1VJZCwgaXNNb2JpbGUsIGdldFNoZWV0UG9zaXRpb25DbGFzcyB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgSURpYWxvZywgSVdpZGdldENvbmZpZywgV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmNvbnN0IGV2ZW50c1JlZ2lzdGVyZWQgPSBmYWxzZTtcblxuY29uc3QgaW52b2tlT3BlbmVkQ2FsbGJhY2sgPSAocmVmKSA9PiB7XG4gICAgaWYgKHJlZikge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSBmaW5kUm9vdENvbnRhaW5lcihyZWYuJGVsZW1lbnQpO1xuICAgICAgICAgICAgLy8gaWYgcGFnZSBzdHlsZXMgaGF2ZSB0byBiZSBhcHBsaWVkIHRvIGRpYWxvZyB0aGVuIGRpYWxvZyBoYXMgdG8gYmUgY2hpbGQgb2YgcGFnZSBlbGVtZW50LlxuICAgICAgICAgICAgaWYgKHJvb3QpIHtcbiAgICAgICAgICAgICAgICAkKCdib2R5ID4gbW9kYWwtY29udGFpbmVyID4gZGl2Jykud3JhcCgnPCcgKyByb290ICsgJy8+Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWYuaW52b2tlRXZlbnRDYWxsYmFjaygnb3BlbmVkJywgeyAkZXZlbnQ6IHsgdHlwZTogJ29wZW5lZCcgfSB9KTtcbiAgICAgICAgICAgIC8vIEZvY3VzaW5nIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCB3aGVuIHRoZSBkaWFsb2cgaXMgb3BlbmVkXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSAkKCdbYXJpYS1sYWJlbGxlZGJ5PSAnICsgcmVmLnRpdGxlSWQgKyAnXScpWzBdO1xuICAgICAgICAgICAgY29uc3Qga2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50cyA9IFtjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAnYSwgYnV0dG9uLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgZGV0YWlscywgaWZyYW1lLCBlbWJlZCwgb2JqZWN0LCBzdW1tYXJ5IGRpYWxvZywgYXVkaW9bY29udHJvbHNdLCB2aWRlb1tjb250cm9sc10sIFtjb250ZW50ZWRpdGFibGVdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknXG4gICAgICAgICAgICApXS5maWx0ZXIoZWwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICFlbFswXS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgIWVsWzBdLmhhc0F0dHJpYnV0ZSgnaGlkZGVuJykpO1xuICAgICAgICAgICAgfSlbMF07XG4gICAgICAgICAgICAkKGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNbMF0pLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IG9wZW5lZERpYWxvZ3MgPSByZWYuZGlhbG9nU2VydmljZS5nZXRPcGVuZWREaWFsb2dzKCk7XG4gICAgICAgICAgICBpZiAob3BlbmVkRGlhbG9ncy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgbGV0IHpJbmRleCA9IE51bWJlcigkKFwiW2FyaWEtbGFiZWxsZWRieT0gXCIgKyBvcGVuZWREaWFsb2dzW29wZW5lZERpYWxvZ3MubGVuZ3RoIC0gMl0udGl0bGVJZCArIFwiXVwiKS5jc3MoJ3otaW5kZXgnKSk7XG4gICAgICAgICAgICAgICAgJCgnW2FyaWEtbGFiZWxsZWRieT0gJyArIHJlZi5kaWFsb2dTZXJ2aWNlLmdldExhc3RPcGVuZWREaWFsb2coKS50aXRsZUlkICsgJ10nKS5jc3MoJ3otaW5kZXgnLCB6SW5kZXggKyAyKTtcbiAgICAgICAgICAgICAgICAkKCdicy1tb2RhbC1iYWNrZHJvcCcpLmNzcygnei1pbmRleCcsIHpJbmRleCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5jb25zdCBpbnZva2VDbG9zZWRDYWxsYmFjayA9IChyZWYpID0+IHtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5pbnZva2VFdmVudENhbGxiYWNrKCdjbG9zZScpO1xuICAgICAgICByZWYuZGlhbG9nUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBvcGVuZWREaWFsb2dzID0gcmVmLmRpYWxvZ1NlcnZpY2UuZ2V0T3BlbmVkRGlhbG9ncygpO1xuICAgICAgICBpZiAob3BlbmVkRGlhbG9ncy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgbGV0IHpJbmRleDogYW55ID0gTnVtYmVyKCQoXCJbYXJpYS1sYWJlbGxlZGJ5PSBcIiArIG9wZW5lZERpYWxvZ3Nbb3BlbmVkRGlhbG9ncy5sZW5ndGggLSAxXS50aXRsZUlkICsgXCJdXCIpLmNzcygnei1pbmRleCcpKTtcbiAgICAgICAgICAgICQoJ2JzLW1vZGFsLWJhY2tkcm9wJykuY3NzKCd6LWluZGV4JywgekluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURpYWxvZyBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBJRGlhbG9nLCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2U7XG5cbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogQnNNb2RhbFJlZjtcbiAgICBwcml2YXRlIGRpYWxvZ0lkOiBudW1iZXI7XG4gICAgcHVibGljIHRpdGxlSWQ6IHN0cmluZyA9ICd3bWRpYWxvZy0nICsgZ2VuZXJhdGVHVUlkKCk7XG4gICAgcHVibGljIHNoZWV0OiBzdHJpbmcgfCBib29sZWFuO1xuICAgIHB1YmxpYyBzaGVldFBvc2l0aW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkaWFsb2dPcmlnaW5Gb2N1c1N0YWNrOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoV2lkZ2V0Q29uZmlnKSBjb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIHByb3RlY3RlZCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9ucyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgY29uZmlnLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSBpbmouZ2V0KEFic3RyYWN0RGlhbG9nU2VydmljZSk7XG4gICAgICAgIHRoaXMuYnNNb2RhbCA9IGluai5nZXQoQnNNb2RhbFNlcnZpY2UpO1xuICAgICAgICBjb25zdCByb3V0ZXIgPSBpbmouZ2V0KFJvdXRlcik7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXG4gICAgICAgICAgICB0aGlzLmJzTW9kYWwub25TaG93bi5zdWJzY3JpYmUoKHsgaWQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRMYXN0T3BlbmVkRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiA9PT0gdGhpcyAmJiAhdGhpcy5kaWFsb2dJZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgZ2V0IHRoZSByZWZlcmVuY2Ugb2YgbGFzdCBwdXNoZWQgZGlhbG9nIGluIHRoZSBhcnJheSBmb3IgY2FsbGluZyBvbk9wZW4gY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlT3BlbmVkQ2FsbGJhY2socmVmKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJZCA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uU2hvdy5zdWJzY3JpYmUoKCkgPT4ge30pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uSGlkZGVuLnN1YnNjcmliZSgoY2xvc2VSZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nSWQgJiYgY2xvc2VSZWFzb24/LmlkID09PSB0aGlzLmRpYWxvZ0lkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjbG9zZVJlYXNvbiA9PT0gJ2VzYycgfHwgY2xvc2VSZWFzb24gPT09ICdiYWNrZHJvcC1jbGljaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldExhc3RPcGVuZWREaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlZiA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0lkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBkaWFsb2cgcmVmZXJlbmNlIGZyb20gb3BlbmVkIGRpYWxvZ3MgYW5kIGNsb3NlZCBkaWFsb2dzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tT3BlbmVkRGlhbG9ncyhyZWYpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbUNsb3NlZERpYWxvZ3MocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQ2xvc2VkQ2FsbGJhY2socmVmKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZi5jbG9zZUNhbGxCYWNrRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZi5jbG9zZUNhbGxCYWNrRm4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uSGlkZS5zdWJzY3JpYmUoKCkgPT4ge30pLFxuICAgICAgICAgICAgcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHsvLyByZW1vdmUgdGhlIGRpYWxvZyByZWZlcmVuY2UgZnJvbSBvcGVuZWQgZGlhbG9ncyBhbmQgY2xvc2VkIGRpYWxvZ3NcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tT3BlbmVkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tQ2xvc2VkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkaWFsb2dcbiAgICAgKiBTdWJzY3JpYmUgdG8gdGhlIG9uU2hvd24gZXZlbnQgZW1pdHRlciBvZiBic01vZGFsIGFuZCB0cmlnZ2VyIG9uLW9wZW5lZCBldmVudCBjYWxsYmFja1xuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuKGluaXRTdGF0ZT86IGFueSkge1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcG9wb3ZlcnMgaW4gdGhlIHBhZ2UgdG8gYXZvaWQgdGhlIG92ZXJsYXAgd2l0aCBkaWFsb2dcbiAgICAgICAgLy8gY2xvc2VQb3BvdmVyKHRoaXMuJGVsZW1lbnQpOyBDb21tZW50aW5nIHRoaXMgbGluZSBiZWNhdXNlIGl0IGlzIGNhdXNpbmcgcmVncmVzc2lvbihpZiB3ZSBoYXZlIGRpYWxvZyBpbnNpZGUgcG9wb3ZlciBhcyBwYXJ0YWlsIGNvbnRlbnQsIHRoZW4gdGhlIGRpYWxvZyBjbG9zZSBpcyBub3Qgd29ya2luZyBiZWNhdXNlIG9uIGNsb3NpbmcgdGhlIHBvcG92ZXIgdGhlIHBhcnRpYWwgZ2V0IGRlc3Ryb3llZC4pXG5cbiAgICAgICAgLy8gZG8gbm90IG9wZW4gdGhlIGRpYWxvZyBhZ2FpbiBpZiBpdCBpcyBhbHJlYWR5IG9wZW5lZFxuICAgICAgICBjb25zdCBkdXBsaWNhdGVEaWFsb2dDaGVjayA9IChvcGVuZWREaWFsb2cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBvcGVuZWREaWFsb2cgPT09IHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nU2VydmljZS5nZXRPcGVuZWREaWFsb2dzKCkuc29tZShkdXBsaWNhdGVEaWFsb2dDaGVjaykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRUb09wZW5lZERpYWxvZ3ModGhpcyk7XG4gICAgICAgIC8vIGV4dGVuZCB0aGUgY29udGV4dCB3aXRoIHRoZSBpbml0U3RhdGVcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbnRleHQsIGluaXRTdGF0ZSk7XG4gICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy50aXRsZUlkO1xuICAgICAgICB0aGlzLmRpYWxvZ09yaWdpbkZvY3VzU3RhY2sucHVzaChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmJzTW9kYWwuc2hvdyh0aGlzLmdldFRlbXBsYXRlUmVmKCksIHRoaXMubW9kYWxPcHRpb25zKTtcbiAgICAgICAgLy8gRml4IGZvciBbV01TLTIzOTQ4XTogRm9jdXMgbW92aW5nIG91dCBvZiBhY3RpdmUgRGlhbG9nIHdpZGdldFxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTZXJ2aWNlLmdldE9wZW5lZERpYWxvZ3MoKS5sZW5ndGggPT09IDEgJiYgKGlzTW9iaWxlKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRTZWxlY3RvciA9ICQoJ2JvZHkgPiBhcHAtcm9vdCcpWzBdO1xuICAgICAgICAgICAgcGFyZW50U2VsZWN0b3Iuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgJCgnLmNkay1mb2N1cy10cmFwLWFuY2hvcicpLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIHRoZSBkaWFsb2dcbiAgICAgKiBpbnZva2VzIHRoZSBvbi1jbG9zZSBldmVudCBjYWxsYmFja1xuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BvdmVycyBpbiB0aGUgcGFnZSB0byBhdm9pZCB0aGUgb3ZlcmxhcCB3aXRoIGRpYWxvZ1xuICAgICAgICAvLyBjbG9zZVBvcG92ZXIodGhpcy4kZWxlbWVudCk7IENvbW1lbnRpbmcgdGhpcyBsaW5lIGJlY2F1c2UgaXQgaXMgY2F1c2luZyByZWdyZXNzaW9uKGlmIHdlIGhhdmUgZGlhbG9nIGluc2lkZSBwb3BvdmVyIGFzIHBhcnRhaWwgY29udGVudCwgdGhlbiB0aGUgZGlhbG9nIGNsb3NlIGlzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb24gY2xvc2luZyB0aGUgcG9wb3ZlciB0aGUgcGFydGlhbCBnZXQgZGVzdHJveWVkLilcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0RGlhbG9nT3JpZ2luID0gdGhpcy5kaWFsb2dPcmlnaW5Gb2N1c1N0YWNrLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZFRvQ2xvc2VkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmhpZGUoKTtcbiAgICAgICAgICAgIC8vIFJldHVybiBmb2N1cyB0byB0aGUgb3JpZ2luYXRpbmcgZWxlbWVudCB1cG9uIGRpYWxvZyBjbG9zdXJlXG4gICAgICAgICAgICBsYXN0RGlhbG9nT3JpZ2luPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIGRpYWxvZyB3aXRoIHRoZSBkaWFsb2cgc2VydmljZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2Vzc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWdpc3RlcihzY29wZSkge1xuICAgICAgICAvLyBhZGQgc2NvcGUgYWxvbmcgd2l0aCBuYW1lIGluIHRoZSBkaWFsb2dSZWZzQ29sbGVjdGlvbiBNYXAgd2hpbGUgcmVnaXN0ZXJpbmcgZGlhbG9nXG4gICAgICAgIC8vIFNvIHRoYXQgMiBkaWFsb2dzIGhhdmluZyBzYW1lIG5hbWUgb24gZGlmZmVyZW50IHBhZ2VzIHdvbid0IGJlIG92ZXJyaWRkZW4uXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZWdpc3Rlcih0aGlzLm5hbWUsIHRoaXMsIHNjb3BlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZSBSZWdpc3RlciB0aGUgZGlhbG9nIHdpdGggdGhlIGRpYWxvZyBzZXJ2aWNlIGFmdGVyIGRpYWxvZyBkZXN0cnVjdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkZVJlZ2lzdGVyKHNjb3BlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kZVJlZ2lzdGVyKHRoaXMubmFtZSwgc2NvcGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHN1YmNsYXNzZXMgb2YgQmFzZURpYWxvZyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlIHByb3BlciB0ZW1wbGF0ZSBlbGVtZW50IHJlZlxuICAgICAqIGJzTW9kYWwgd2lsbCB1c2UgdGhpcyByZWZlbmNlIHRvIG9wZW4gdGhlIGRpYWxvZ1xuICAgICAqIEByZXR1cm5zIHtUZW1wbGF0ZVJlZjxhbnk+fVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUZW1wbGF0ZVJlZigpOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJvdGVjdGVkIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIC8vIGlnbm9yZSB0aGUgY2xhc3MgYXR0cmlidXRlLlxuICAgICAgICAvLyBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSBzZXR0aW5nIHRoZSBjbGFzcyBvbiB0aGUgaG9zdCBlbGVtZW50LlxuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ25hbWUnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2FuaW1hdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmNsYXNzID0gdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MucmVwbGFjZSgnIGFuaW1hdGVkICcgKyBvdiwgJycpO1xuICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MgPSB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcyArICcgYW5pbWF0ZWQgJyArIG52O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRlUmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -18,8 +18,7 @@ function DialogHeaderComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
18
18
|
i0.ɵɵelementEnd();
|
|
19
19
|
} if (rf & 2) {
|
|
20
20
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
21
|
-
i0.ɵɵ
|
|
22
|
-
i0.ɵɵattribute("aria-label", "Close " + (ctx_r1.title ? ctx_r1.title : "") + " dialog");
|
|
21
|
+
i0.ɵɵattribute("aria-label", "Close " + (ctx_r1.title ? ctx_r1.title : "") + " dialog")("title", ctx_r1.title ? "Close " + ctx_r1.title + " dialog" : ctx_r1.dialogRef.appLocale.LABEL_CLOSE);
|
|
23
22
|
} }
|
|
24
23
|
function DialogHeaderComponent_Case_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
25
24
|
i0.ɵɵelementContainer(0);
|
|
@@ -163,7 +162,7 @@ export class DialogHeaderComponent {
|
|
|
163
162
|
this.dialogRef.close();
|
|
164
163
|
}
|
|
165
164
|
static { this.ɵfac = function DialogHeaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DialogHeaderComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DialogRef)); }; }
|
|
166
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogHeaderComponent, selectors: [["div", "wmDialogHeader", ""]], inputs: { iconwidth: "iconwidth", iconheight: "iconheight", iconmargin: "iconmargin", iconclass: "iconclass", iconurl: "iconurl", closable: "closable", heading: "heading", headinglevel: "headinglevel", subheading: "subheading", titleid: "titleid", title: "title" }, standalone: true, features: [i0.ɵɵStandaloneFeature], attrs: _c0, decls: 10, vars: 2, consts: [["headerTemplate", ""], [1, "app-dialog-close", "close"
|
|
165
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogHeaderComponent, selectors: [["div", "wmDialogHeader", ""]], inputs: { iconwidth: "iconwidth", iconheight: "iconheight", iconmargin: "iconmargin", iconclass: "iconclass", iconurl: "iconurl", closable: "closable", heading: "heading", headinglevel: "headinglevel", subheading: "subheading", titleid: "titleid", title: "title" }, standalone: true, features: [i0.ɵɵStandaloneFeature], attrs: _c0, decls: 10, vars: 2, consts: [["headerTemplate", ""], [1, "app-dialog-close", "close"], [1, "app-dialog-title", "modal-title"], [1, "app-dialog-close", "close", 3, "click"], ["aria-hidden", "true", 1, "app-icon", "wi", "wi-clear"], [4, "ngTemplateOutlet"], [3, "ngClass", "ngStyle"], ["data-identifier", "img", 3, "src", "ngStyle"], [1, "dialog-heading", 3, "textContent", "id"], [1, "dialog-sub-heading", 3, "title", "textContent"]], template: function DialogHeaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
167
166
|
i0.ɵɵtemplate(0, DialogHeaderComponent_Conditional_0_Template, 2, 2, "button", 1)(1, DialogHeaderComponent_Case_1_Template, 2, 1, "h1", 2)(2, DialogHeaderComponent_Case_2_Template, 2, 1, "h2", 2)(3, DialogHeaderComponent_Case_3_Template, 2, 1, "h3", 2)(4, DialogHeaderComponent_Case_4_Template, 2, 1, "h4", 2)(5, DialogHeaderComponent_Case_5_Template, 2, 1, "h5", 2)(6, DialogHeaderComponent_Case_6_Template, 2, 1, "h6", 2)(7, DialogHeaderComponent_Case_7_Template, 2, 1, "h4", 2)(8, DialogHeaderComponent_ng_template_8_Template, 4, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
168
167
|
} if (rf & 2) {
|
|
169
168
|
let tmp_2_0;
|
|
@@ -174,7 +173,7 @@ export class DialogHeaderComponent {
|
|
|
174
173
|
}
|
|
175
174
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogHeaderComponent, [{
|
|
176
175
|
type: Component,
|
|
177
|
-
args: [{ standalone: true, imports: [CommonModule, WmComponentsModule], selector: 'div[wmDialogHeader]', template: "@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" title=\"
|
|
176
|
+
args: [{ standalone: true, imports: [CommonModule, WmComponentsModule], selector: 'div[wmDialogHeader]', template: "@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" [attr.title]=\"title ? 'Close ' + title + ' dialog' : dialogRef.appLocale.LABEL_CLOSE\" >\n <span class=\"app-icon wi wi-clear\" aria-hidden=\"true\"></span>\n </button>\n}\n\n@switch (headinglevel) {\n @case ('h1') {\n <h1 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h6>\n }\n @default {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n}\n\n<ng-template #headerTemplate>\n @if (iconclass && !iconurl) {\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"></i>\n }\n @if (iconurl) {\n <img data-identifier=\"img\" [src]=\"iconurl | image\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"/>\n }\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n @if (subheading) {\n <span class=\"dialog-sub-heading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n }\n</ng-template>\n" }]
|
|
178
177
|
}], () => [{ type: i0.ElementRef }, { type: i3.BaseDialog, decorators: [{
|
|
179
178
|
type: Inject,
|
|
180
179
|
args: [DialogRef]
|
|
@@ -202,4 +201,4 @@ export class DialogHeaderComponent {
|
|
|
202
201
|
type: Input
|
|
203
202
|
}] }); })();
|
|
204
203
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogHeaderComponent, { className: "DialogHeaderComponent", filePath: "dialog-header/dialog-header.component.ts", lineNumber: 19 }); })();
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9kaWFsb2ctaGVhZGVyL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvZGVmYXVsdC9zcmMvZGlhbG9nLWhlYWRlci9kaWFsb2ctaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztJQ054QyxpQ0FDd0w7SUFEaEwseUxBQVMsb0JBQWEsS0FBRTtJQUU5QiwwQkFBNkQ7SUFDL0QsaUJBQVM7Ozs7OztJQU1MLHdCQUFnRTs7O0lBRGxFLDZCQUF5QztJQUN2QywrRkFBaUQ7SUFDbkQsaUJBQUs7Ozs7SUFEWSxjQUFnQztJQUFoQyxvREFBZ0M7OztJQUsvQyx3QkFBZ0U7OztJQURsRSw2QkFBeUM7SUFDdkMsK0ZBQWlEO0lBQ25ELGlCQUFLOzs7O0lBRFksY0FBZ0M7SUFBaEMsb0RBQWdDOzs7SUFLL0Msd0JBQWdFOzs7SUFEbEUsNkJBQXlDO0lBQ3ZDLCtGQUFpRDtJQUNuRCxpQkFBSzs7OztJQURZLGNBQWdDO0lBQWhDLG9EQUFnQzs7O0lBSy9DLHdCQUFnRTs7O0lBRGxFLDZCQUF5QztJQUN2QywrRkFBaUQ7SUFDbkQsaUJBQUs7Ozs7SUFEWSxjQUFnQztJQUFoQyxvREFBZ0M7OztJQUsvQyx3QkFBZ0U7OztJQURsRSw2QkFBeUM7SUFDdkMsK0ZBQWlEO0lBQ25ELGlCQUFLOzs7O0lBRFksY0FBZ0M7SUFBaEMsb0RBQWdDOzs7SUFLL0Msd0JBQWdFOzs7SUFEbEUsNkJBQXlDO0lBQ3ZDLCtGQUFpRDtJQUNuRCxpQkFBSzs7OztJQURZLGNBQWdDO0lBQWhDLG9EQUFnQzs7O0lBSy9DLHdCQUFnRTs7O0lBRGxFLDZCQUF5QztJQUN2QywrRkFBaUQ7SUFDbkQsaUJBQUs7Ozs7SUFEWSxjQUFnQztJQUFoQyxvREFBZ0M7OztJQU9qRCx1QkFBb0c7OztJQUEzRSxBQUF0QiwwQ0FBcUIsK0ZBQXVFOzs7SUFHL0YseUJBQTJIOzs7O0lBQXhFLEFBQXhCLDRFQUF1QiwrRkFBdUU7OztJQUl6SCwwQkFBd0Y7OztJQUFsQyxBQUFyQix5Q0FBb0Isa0NBQTJCOzs7SUFMbEYsQUFIQSwwRkFBNkIsK0VBR2Q7SUFHZiwwQkFBMkU7SUFDM0UsNkZBQWtCOzs7SUFQbEIsOERBRUM7SUFDRCxjQUVDO0lBRkQseUNBRUM7SUFDNEIsY0FBdUI7SUFBQyxBQUF4Qiw0Q0FBdUIsc0JBQWU7SUFDbkUsY0FFQztJQUZELDRDQUVDOztBRDlDSCxNQUFNLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNyRCxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztBQVF2QyxNQUFNLE9BQU8scUJBQXFCO0lBYzlCLElBQVcsVUFBVTtRQUNqQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksS0FBaUIsRUFBNEIsU0FBcUI7UUFBckIsY0FBUyxHQUFULFNBQVMsQ0FBWTtRQWhCOUQsY0FBUyxHQUFHLHVCQUF1QixDQUFDO1FBQ3BDLGVBQVUsR0FBRyx1QkFBdUIsQ0FBQztRQUlyQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBVXpDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO3NIQXhCUSxxQkFBcUIsNERBa0JTLFNBQVM7b0VBbEJ2QyxxQkFBcUI7WUMyQmxDLEFBUEUsQUFMQSxBQUxBLEFBTEEsQUFMQSxBQUxBLEFBTEEsQUFSRixpRkFBa0IseURBUUYseURBS0EseURBS0EseURBS0EseURBS0EseURBS0EseURBS0osMEdBT2lCOzs7WUE3QzdCLHlDQUtDO1lBRUQsY0FvQ0M7WUFwQ0Qsa0RBQUEsSUFBSSxtQkFBSixJQUFJLG1CQUFKLElBQUksbUJBQUosSUFBSSxtQkFBSixJQUFJLG1CQUFKLElBQUksU0FvQ0g7NEJEN0JXLFlBQVksK0NBQUUsa0JBQWtCOztpRkFJL0IscUJBQXFCO2NBTmpDLFNBQVM7NkJBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLFlBQy9CLHFCQUFxQjs7c0JBcUJDLE1BQU07dUJBQUMsU0FBUztxQkFoQmhDLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsVUFBVTtrQkFBekIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxPQUFPO2tCQUF0QixLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsVUFBVTtrQkFBekIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxLQUFLO2tCQUFwQixLQUFLOztrRkFaRyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV21Db21wb25lbnRzTW9kdWxlIH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2VcIjtcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHthZGRDbGFzcywgdG9Cb29sZWFufSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7RGlhbG9nUmVmfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7QmFzZURpYWxvZ30gZnJvbSAnLi4vYmFzZS1kaWFsb2cnO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtZGlhbG9nLWhlYWRlciBtb2RhbC1oZWFkZXInO1xuY29uc3QgREVGQVVMVF9JQ09OX0RJTUVOU0lPTlMgPSAnMjFweCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBXbUNvbXBvbmVudHNNb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtRGlhbG9nSGVhZGVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0hlYWRlckNvbXBvbmVudCB7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaWNvbndpZHRoID0gREVGQVVMVF9JQ09OX0RJTUVOU0lPTlM7XG4gICAgQElucHV0KCkgcHVibGljIGljb25oZWlnaHQgPSBERUZBVUxUX0lDT05fRElNRU5TSU9OUztcbiAgICBASW5wdXQoKSBwdWJsaWMgaWNvbm1hcmdpbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uY2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaWNvbnVybDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zYWJsZSA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIGhlYWRpbmc6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVhZGluZ2xldmVsPzogc3RyaW5nID0gJ2g0JztcbiAgICBASW5wdXQoKSBwdWJsaWMgc3ViaGVhZGluZzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0aXRsZWlkOnN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICAgIHB1YmxpYyBnZXQgaXNDbG9zYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvQm9vbGVhbih0aGlzLmNsb3NhYmxlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihlbFJlZjogRWxlbWVudFJlZiwgQEluamVjdChEaWFsb2dSZWYpIHB1YmxpYyBkaWFsb2dSZWY6IEJhc2VEaWFsb2cgKSB7XG4gICAgICAgIGFkZENsYXNzKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIERFRkFVTFRfQ0xTKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxufVxuIiwiQGlmIChpc0Nsb3NhYmxlKSB7XG4gIDxidXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKCk7XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDbG9zZSAnICsgKHRpdGxlID8gdGl0bGUgOiAnJykgKyAnIGRpYWxvZydcIiBjbGFzcz1cImFwcC1kaWFsb2ctY2xvc2UgY2xvc2VcIiBbYXR0ci50aXRsZV09XCJ0aXRsZSA/ICdDbG9zZSAnICsgdGl0bGUgKyAnIGRpYWxvZycgOiBkaWFsb2dSZWYuYXBwTG9jYWxlLkxBQkVMX0NMT1NFXCIgPlxuICAgIDxzcGFuIGNsYXNzPVwiYXBwLWljb24gd2kgd2ktY2xlYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gIDwvYnV0dG9uPlxufVxuXG5Ac3dpdGNoIChoZWFkaW5nbGV2ZWwpIHtcbiAgQGNhc2UgKCdoMScpIHtcbiAgICA8aDEgY2xhc3M9XCJhcHAtZGlhbG9nLXRpdGxlIG1vZGFsLXRpdGxlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2gxPlxuICB9XG4gIEBjYXNlICgnaDInKSB7XG4gICAgPGgyIGNsYXNzPVwiYXBwLWRpYWxvZy10aXRsZSBtb2RhbC10aXRsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9oMj5cbiAgfVxuICBAY2FzZSAoJ2gzJykge1xuICAgIDxoMyBjbGFzcz1cImFwcC1kaWFsb2ctdGl0bGUgbW9kYWwtdGl0bGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaDM+XG4gIH1cbiAgQGNhc2UgKCdoNCcpIHtcbiAgICA8aDQgY2xhc3M9XCJhcHAtZGlhbG9nLXRpdGxlIG1vZGFsLXRpdGxlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2g0PlxuICB9XG4gIEBjYXNlICgnaDUnKSB7XG4gICAgPGg1IGNsYXNzPVwiYXBwLWRpYWxvZy10aXRsZSBtb2RhbC10aXRsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9oNT5cbiAgfVxuICBAY2FzZSAoJ2g2Jykge1xuICAgIDxoNiBjbGFzcz1cImFwcC1kaWFsb2ctdGl0bGUgbW9kYWwtdGl0bGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaDY+XG4gIH1cbiAgQGRlZmF1bHQge1xuICAgIDxoNCBjbGFzcz1cImFwcC1kaWFsb2ctdGl0bGUgbW9kYWwtdGl0bGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaDQ+XG4gIH1cbn1cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cbiAgQGlmIChpY29uY2xhc3MgJiYgIWljb251cmwpIHtcbiAgICA8aSBbbmdDbGFzc109XCJpY29uY2xhc3NcIiBbbmdTdHlsZV09XCJ7d2lkdGg6IGljb253aWR0aCwgaGVpZ2h0OiBpY29uaGVpZ2h0LCBtYXJnaW46IGljb25tYXJnaW59XCI+PC9pPlxuICB9XG4gIEBpZiAoaWNvbnVybCkge1xuICAgIDxpbWcgZGF0YS1pZGVudGlmaWVyPVwiaW1nXCIgW3NyY109XCJpY29udXJsIHwgaW1hZ2VcIiBbbmdTdHlsZV09XCJ7d2lkdGg6IGljb253aWR0aCwgaGVpZ2h0OiBpY29uaGVpZ2h0LCBtYXJnaW46IGljb25tYXJnaW59XCIvPlxuICB9XG4gIDxzcGFuIGNsYXNzPVwiZGlhbG9nLWhlYWRpbmdcIiBbdGV4dENvbnRlbnRdPVwiaGVhZGluZ1wiIFtpZF09XCJ0aXRsZWlkXCI+PC9zcGFuPlxuICBAaWYgKHN1YmhlYWRpbmcpIHtcbiAgICA8c3BhbiBjbGFzcz1cImRpYWxvZy1zdWItaGVhZGluZ1wiIFt0aXRsZV09XCJzdWJoZWFkaW5nXCIgW3RleHRDb250ZW50XT1cInN1YmhlYWRpbmdcIj48L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -8,7 +8,6 @@ import { DialogRef, register, PROP_STRING, PROP_BOOLEAN, BaseComponent, provideA
|
|
|
8
8
|
import * as i1$1 from '@angular/common';
|
|
9
9
|
import { CommonModule } from '@angular/common';
|
|
10
10
|
import { Router, NavigationEnd } from '@angular/router';
|
|
11
|
-
import { createFocusTrap } from '@wavemaker/focus-trap';
|
|
12
11
|
|
|
13
12
|
const DEFAULT_CLS$1 = 'app-dialog-body modal-body';
|
|
14
13
|
class DialogBodyDirective {
|
|
@@ -118,9 +117,6 @@ class DialogFooterDirective extends BaseComponent {
|
|
|
118
117
|
}] }], null); })();
|
|
119
118
|
|
|
120
119
|
const eventsRegistered = false;
|
|
121
|
-
const focusTrapObj = {
|
|
122
|
-
activeElement: null
|
|
123
|
-
};
|
|
124
120
|
const invokeOpenedCallback = (ref) => {
|
|
125
121
|
if (ref) {
|
|
126
122
|
setTimeout(() => {
|
|
@@ -130,19 +126,12 @@ const invokeOpenedCallback = (ref) => {
|
|
|
130
126
|
$('body > modal-container > div').wrap('<' + root + '/>');
|
|
131
127
|
}
|
|
132
128
|
ref.invokeEventCallback('opened', { $event: { type: 'opened' } });
|
|
133
|
-
//
|
|
129
|
+
// Focusing the first focusable element when the dialog is opened
|
|
134
130
|
const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];
|
|
135
131
|
const keyboardFocusableElements = [container.querySelectorAll('a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex="-1"])')].filter(el => {
|
|
136
132
|
return (!el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'));
|
|
137
133
|
})[0];
|
|
138
134
|
$(keyboardFocusableElements[0]).focus();
|
|
139
|
-
focusTrapObj[ref.titleId] = createFocusTrap(container, {
|
|
140
|
-
onActivate: () => container.classList.add('is-active'),
|
|
141
|
-
onDeactivate: () => container.classList.remove('is-active'),
|
|
142
|
-
allowOutsideClick: true,
|
|
143
|
-
setReturnFocus: focusTrapObj.activeElement,
|
|
144
|
-
});
|
|
145
|
-
focusTrapObj[ref.titleId].activate();
|
|
146
135
|
const openedDialogs = ref.dialogService.getOpenedDialogs();
|
|
147
136
|
if (openedDialogs.length > 1) {
|
|
148
137
|
let zIndex = Number($("[aria-labelledby= " + openedDialogs[openedDialogs.length - 2].titleId + "]").css('z-index'));
|
|
@@ -168,6 +157,7 @@ class BaseDialog extends BaseComponent {
|
|
|
168
157
|
super(inj, config, explicitContext);
|
|
169
158
|
this.modalOptions = modalOptions;
|
|
170
159
|
this.titleId = 'wmdialog-' + generateGUId();
|
|
160
|
+
this.dialogOriginFocusStack = [];
|
|
171
161
|
this.dialogService = inj.get(AbstractDialogService);
|
|
172
162
|
this.bsModal = inj.get(BsModalService);
|
|
173
163
|
const router = inj.get(Router);
|
|
@@ -180,9 +170,7 @@ class BaseDialog extends BaseComponent {
|
|
|
180
170
|
this.dialogId = id;
|
|
181
171
|
}
|
|
182
172
|
}),
|
|
183
|
-
this.bsModal.onShow.subscribe(() => {
|
|
184
|
-
focusTrapObj.activeElement = document.activeElement;
|
|
185
|
-
}),
|
|
173
|
+
this.bsModal.onShow.subscribe(() => { }),
|
|
186
174
|
this.bsModal.onHidden.subscribe((closeReason) => {
|
|
187
175
|
let ref = this.dialogService.getDialogRefFromClosedDialogs();
|
|
188
176
|
if (this.dialogId && closeReason?.id === this.dialogId) {
|
|
@@ -202,13 +190,7 @@ class BaseDialog extends BaseComponent {
|
|
|
202
190
|
}
|
|
203
191
|
}
|
|
204
192
|
}),
|
|
205
|
-
this.bsModal.onHide.subscribe(() => {
|
|
206
|
-
// Will de-activate focus trap for the respective dialog when they are closed.
|
|
207
|
-
const ref = this.dialogService.getDialogRefFromClosedDialogs();
|
|
208
|
-
if (ref && focusTrapObj[ref.titleId] !== undefined) {
|
|
209
|
-
focusTrapObj[ref.titleId].deactivate();
|
|
210
|
-
}
|
|
211
|
-
}),
|
|
193
|
+
this.bsModal.onHide.subscribe(() => { }),
|
|
212
194
|
router.events.subscribe(e => {
|
|
213
195
|
if (e instanceof NavigationEnd) {
|
|
214
196
|
this.close();
|
|
@@ -239,6 +221,7 @@ class BaseDialog extends BaseComponent {
|
|
|
239
221
|
// extend the context with the initState
|
|
240
222
|
Object.assign(this.context, initState);
|
|
241
223
|
this.modalOptions.ariaLabelledBy = this.titleId;
|
|
224
|
+
this.dialogOriginFocusStack.push(document.activeElement);
|
|
242
225
|
this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
|
|
243
226
|
// Fix for [WMS-23948]: Focus moving out of active Dialog widget
|
|
244
227
|
if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile())) {
|
|
@@ -255,8 +238,11 @@ class BaseDialog extends BaseComponent {
|
|
|
255
238
|
// remove the popovers in the page to avoid the overlap with dialog
|
|
256
239
|
// closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)
|
|
257
240
|
if (this.dialogRef) {
|
|
241
|
+
const lastDialogOrigin = this.dialogOriginFocusStack.pop();
|
|
258
242
|
this.dialogService.addToClosedDialogs(this);
|
|
259
243
|
this.dialogRef.hide();
|
|
244
|
+
// Return focus to the originating element upon dialog closure
|
|
245
|
+
lastDialogOrigin?.focus();
|
|
260
246
|
}
|
|
261
247
|
}
|
|
262
248
|
/**
|
|
@@ -317,8 +303,7 @@ function DialogHeaderComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
317
303
|
i0.ɵɵelementEnd();
|
|
318
304
|
} if (rf & 2) {
|
|
319
305
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
320
|
-
i0.ɵɵ
|
|
321
|
-
i0.ɵɵattribute("aria-label", "Close " + (ctx_r1.title ? ctx_r1.title : "") + " dialog");
|
|
306
|
+
i0.ɵɵattribute("aria-label", "Close " + (ctx_r1.title ? ctx_r1.title : "") + " dialog")("title", ctx_r1.title ? "Close " + ctx_r1.title + " dialog" : ctx_r1.dialogRef.appLocale.LABEL_CLOSE);
|
|
322
307
|
} }
|
|
323
308
|
function DialogHeaderComponent_Case_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
324
309
|
i0.ɵɵelementContainer(0);
|
|
@@ -462,7 +447,7 @@ class DialogHeaderComponent {
|
|
|
462
447
|
this.dialogRef.close();
|
|
463
448
|
}
|
|
464
449
|
static { this.ɵfac = function DialogHeaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DialogHeaderComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DialogRef)); }; }
|
|
465
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogHeaderComponent, selectors: [["div", "wmDialogHeader", ""]], inputs: { iconwidth: "iconwidth", iconheight: "iconheight", iconmargin: "iconmargin", iconclass: "iconclass", iconurl: "iconurl", closable: "closable", heading: "heading", headinglevel: "headinglevel", subheading: "subheading", titleid: "titleid", title: "title" }, standalone: true, features: [i0.ɵɵStandaloneFeature], attrs: _c0, decls: 10, vars: 2, consts: [["headerTemplate", ""], [1, "app-dialog-close", "close"
|
|
450
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogHeaderComponent, selectors: [["div", "wmDialogHeader", ""]], inputs: { iconwidth: "iconwidth", iconheight: "iconheight", iconmargin: "iconmargin", iconclass: "iconclass", iconurl: "iconurl", closable: "closable", heading: "heading", headinglevel: "headinglevel", subheading: "subheading", titleid: "titleid", title: "title" }, standalone: true, features: [i0.ɵɵStandaloneFeature], attrs: _c0, decls: 10, vars: 2, consts: [["headerTemplate", ""], [1, "app-dialog-close", "close"], [1, "app-dialog-title", "modal-title"], [1, "app-dialog-close", "close", 3, "click"], ["aria-hidden", "true", 1, "app-icon", "wi", "wi-clear"], [4, "ngTemplateOutlet"], [3, "ngClass", "ngStyle"], ["data-identifier", "img", 3, "src", "ngStyle"], [1, "dialog-heading", 3, "textContent", "id"], [1, "dialog-sub-heading", 3, "title", "textContent"]], template: function DialogHeaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
466
451
|
i0.ɵɵtemplate(0, DialogHeaderComponent_Conditional_0_Template, 2, 2, "button", 1)(1, DialogHeaderComponent_Case_1_Template, 2, 1, "h1", 2)(2, DialogHeaderComponent_Case_2_Template, 2, 1, "h2", 2)(3, DialogHeaderComponent_Case_3_Template, 2, 1, "h3", 2)(4, DialogHeaderComponent_Case_4_Template, 2, 1, "h4", 2)(5, DialogHeaderComponent_Case_5_Template, 2, 1, "h5", 2)(6, DialogHeaderComponent_Case_6_Template, 2, 1, "h6", 2)(7, DialogHeaderComponent_Case_7_Template, 2, 1, "h4", 2)(8, DialogHeaderComponent_ng_template_8_Template, 4, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
467
452
|
} if (rf & 2) {
|
|
468
453
|
let tmp_2_0;
|
|
@@ -473,7 +458,7 @@ class DialogHeaderComponent {
|
|
|
473
458
|
}
|
|
474
459
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogHeaderComponent, [{
|
|
475
460
|
type: Component,
|
|
476
|
-
args: [{ standalone: true, imports: [CommonModule, WmComponentsModule], selector: 'div[wmDialogHeader]', template: "@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" title=\"
|
|
461
|
+
args: [{ standalone: true, imports: [CommonModule, WmComponentsModule], selector: 'div[wmDialogHeader]', template: "@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" [attr.title]=\"title ? 'Close ' + title + ' dialog' : dialogRef.appLocale.LABEL_CLOSE\" >\n <span class=\"app-icon wi wi-clear\" aria-hidden=\"true\"></span>\n </button>\n}\n\n@switch (headinglevel) {\n @case ('h1') {\n <h1 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h6>\n }\n @default {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n}\n\n<ng-template #headerTemplate>\n @if (iconclass && !iconurl) {\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"></i>\n }\n @if (iconurl) {\n <img data-identifier=\"img\" [src]=\"iconurl | image\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"/>\n }\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n @if (subheading) {\n <span class=\"dialog-sub-heading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n }\n</ng-template>\n" }]
|
|
477
462
|
}], () => [{ type: i0.ElementRef }, { type: BaseDialog, decorators: [{
|
|
478
463
|
type: Inject,
|
|
479
464
|
args: [DialogRef]
|