@skyux/modals 8.7.2 → 9.0.0-alpha.1
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/documentation.json +56 -56
- package/esm2022/lib/modules/confirm/confirm.component.mjs +112 -0
- package/{esm2020 → esm2022}/lib/modules/confirm/confirm.module.mjs +13 -13
- package/esm2022/lib/modules/confirm/confirm.service.mjs +54 -0
- package/esm2022/lib/modules/modal/modal-adapter.service.mjs +99 -0
- package/esm2022/lib/modules/modal/modal-component-adapter.service.mjs +101 -0
- package/{esm2020 → esm2022}/lib/modules/modal/modal-configuration.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/modal/modal-content.component.mjs +4 -4
- package/esm2022/lib/modules/modal/modal-errors.service.mjs +21 -0
- package/{esm2020 → esm2022}/lib/modules/modal/modal-footer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/modal/modal-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/modal/modal-host-context.mjs +4 -4
- package/esm2022/lib/modules/modal/modal-host.component.mjs +163 -0
- package/esm2022/lib/modules/modal/modal-host.service.mjs +62 -0
- package/esm2022/lib/modules/modal/modal-instance.mjs +123 -0
- package/esm2022/lib/modules/modal/modal-is-dirty.directive.mjs +94 -0
- package/esm2022/lib/modules/modal/modal-scroll-shadow.directive.mjs +129 -0
- package/esm2022/lib/modules/modal/modal.component.mjs +229 -0
- package/{esm2020 → esm2022}/lib/modules/modal/modal.module.mjs +29 -29
- package/esm2022/lib/modules/modal/modal.service.mjs +97 -0
- package/esm2022/lib/modules/shared/sky-modals-resources.module.mjs +61 -0
- package/esm2022/testing/confirm/confirm-button-harness.mjs +46 -0
- package/esm2022/testing/confirm/confirm-harness.mjs +90 -0
- package/esm2022/testing/modal/modal-harness.mjs +75 -0
- package/esm2022/testing/modal-fixture.mjs +143 -0
- package/{fesm2020 → fesm2022}/skyux-modals-testing.mjs +60 -73
- package/{fesm2020 → fesm2022}/skyux-modals-testing.mjs.map +1 -1
- package/fesm2022/skyux-modals.mjs +1502 -0
- package/{fesm2015 → fesm2022}/skyux-modals.mjs.map +1 -1
- package/lib/modules/modal/modal-is-dirty.directive.d.ts +1 -1
- package/lib/modules/modal/modal.component.d.ts +1 -1
- package/package.json +16 -24
- package/esm2020/lib/modules/confirm/confirm.component.mjs +0 -114
- package/esm2020/lib/modules/confirm/confirm.service.mjs +0 -57
- package/esm2020/lib/modules/modal/modal-adapter.service.mjs +0 -101
- package/esm2020/lib/modules/modal/modal-component-adapter.service.mjs +0 -104
- package/esm2020/lib/modules/modal/modal-errors.service.mjs +0 -24
- package/esm2020/lib/modules/modal/modal-host.component.mjs +0 -164
- package/esm2020/lib/modules/modal/modal-host.service.mjs +0 -65
- package/esm2020/lib/modules/modal/modal-instance.mjs +0 -127
- package/esm2020/lib/modules/modal/modal-is-dirty.directive.mjs +0 -93
- package/esm2020/lib/modules/modal/modal-scroll-shadow.directive.mjs +0 -127
- package/esm2020/lib/modules/modal/modal.component.mjs +0 -228
- package/esm2020/lib/modules/modal/modal.service.mjs +0 -99
- package/esm2020/lib/modules/shared/sky-modals-resources.module.mjs +0 -61
- package/esm2020/testing/confirm/confirm-button-harness.mjs +0 -46
- package/esm2020/testing/confirm/confirm-harness.mjs +0 -97
- package/esm2020/testing/modal/modal-harness.mjs +0 -81
- package/esm2020/testing/modal-fixture.mjs +0 -145
- package/fesm2015/skyux-modals-testing.mjs +0 -409
- package/fesm2015/skyux-modals-testing.mjs.map +0 -1
- package/fesm2015/skyux-modals.mjs +0 -1522
- package/fesm2020/skyux-modals.mjs +0 -1510
- package/fesm2020/skyux-modals.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button-action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button-style-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-closed-event-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-config-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-before-close-handler.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-close-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-host-context-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-scroll-shadow-event-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-modals.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/confirm/confirm-button-harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/modal/modal-harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-modals-testing.mjs +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@skyux/core";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export class SkyModalAdapterService {
|
|
8
|
+
static { this.MODAL_BODY_FULL_CLASS = 'sky-modal-body-full-page'; }
|
|
9
|
+
static { this.MODAL_BODY_CLASS = 'sky-modal-body-open'; }
|
|
10
|
+
#docRef;
|
|
11
|
+
#bodyEl;
|
|
12
|
+
#windowRef;
|
|
13
|
+
#hostSiblingAriaHiddenCache = new Map();
|
|
14
|
+
constructor(windowRef) {
|
|
15
|
+
this.#windowRef = windowRef;
|
|
16
|
+
this.#docRef = this.#windowRef.nativeWindow.document;
|
|
17
|
+
this.#bodyEl = this.#windowRef.nativeWindow.document.body;
|
|
18
|
+
}
|
|
19
|
+
toggleFullPageModalClass(isAddFull) {
|
|
20
|
+
if (isAddFull) {
|
|
21
|
+
this.#addClassToBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.#removeClassFromBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
setPageScroll(isAdd) {
|
|
28
|
+
if (isAdd) {
|
|
29
|
+
this.#addClassToBody(SkyModalAdapterService.MODAL_BODY_CLASS);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.#removeClassFromBody(SkyModalAdapterService.MODAL_BODY_CLASS);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getModalOpener() {
|
|
36
|
+
return this.#docRef.activeElement;
|
|
37
|
+
}
|
|
38
|
+
#addClassToBody(className) {
|
|
39
|
+
this.#bodyEl.classList.add(className);
|
|
40
|
+
}
|
|
41
|
+
#removeClassFromBody(className) {
|
|
42
|
+
this.#bodyEl.classList.remove(className);
|
|
43
|
+
}
|
|
44
|
+
scrollContentToTop(element) {
|
|
45
|
+
element.nativeElement.querySelector('.sky-modal-content').scrollTop = 0;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Hides siblings of modal-host from screen readers
|
|
49
|
+
* @param hostElRef reference to modal-host element
|
|
50
|
+
*/
|
|
51
|
+
hideHostSiblingsFromScreenReaders(hostElRef) {
|
|
52
|
+
const hostElement = hostElRef.nativeElement;
|
|
53
|
+
const hostSiblings = hostElement.parentElement.children;
|
|
54
|
+
for (let i = 0; i < hostSiblings.length; i++) {
|
|
55
|
+
const element = hostSiblings[i];
|
|
56
|
+
if (element !== hostElement &&
|
|
57
|
+
!element.hasAttribute('aria-live') &&
|
|
58
|
+
element.nodeName.toLowerCase() !== 'script' &&
|
|
59
|
+
element.nodeName.toLowerCase() !== 'style') {
|
|
60
|
+
// preserve previous aria-hidden status of elements outside of modal host
|
|
61
|
+
this.#hostSiblingAriaHiddenCache.set(element, element.getAttribute('aria-hidden'));
|
|
62
|
+
element.setAttribute('aria-hidden', 'true');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Restores modal-host siblings to screen reader status prior to modals being opened
|
|
68
|
+
*/
|
|
69
|
+
unhideOrRestoreHostSiblingsFromScreenReaders() {
|
|
70
|
+
this.#hostSiblingAriaHiddenCache.forEach((previousValue, element) => {
|
|
71
|
+
// if element had aria-hidden status prior, restore status
|
|
72
|
+
if (element.parentElement) {
|
|
73
|
+
if (previousValue) {
|
|
74
|
+
element.setAttribute('aria-hidden', previousValue);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
element.removeAttribute('aria-hidden');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
this.#hostSiblingAriaHiddenCache.clear();
|
|
82
|
+
}
|
|
83
|
+
hidePreviousModalFromScreenReaders(topModal) {
|
|
84
|
+
if (topModal && topModal.nativeElement.previousElementSibling) {
|
|
85
|
+
topModal.nativeElement.previousElementSibling.setAttribute('aria-hidden', 'true');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
unhidePreviousModalFromScreenReaders(topModal) {
|
|
89
|
+
if (topModal && topModal.nativeElement.previousElementSibling) {
|
|
90
|
+
topModal.nativeElement.previousElementSibling.removeAttribute('aria-hidden');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalAdapterService, deps: [{ token: i1.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
94
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalAdapterService }); }
|
|
95
|
+
}
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalAdapterService, decorators: [{
|
|
97
|
+
type: Injectable
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAppWindowRef }]; } });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUd2RDs7R0FFRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7YUFDVCwwQkFBcUIsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7YUFDbkQscUJBQWdCLEdBQUcscUJBQXFCLEFBQXhCLENBQXlCO0lBRWpFLE9BQU8sQ0FBTTtJQUNiLE9BQU8sQ0FBYztJQUVyQixVQUFVLENBQWtCO0lBQzVCLDJCQUEyQixHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0lBRWhFLFlBQVksU0FBMEI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxTQUFrQjtRQUNoRCxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNwRTthQUFNO1lBQ0wsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWM7UUFDakMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLGdCQUFn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eyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTU9EQUxfQk9EWV9GVUxMX0NMQVNTID0gJ3NreS1tb2RhbC1ib2R5LWZ1bGwtcGFnZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1PREFMX0JPRFlfQ0xBU1MgPSAnc2t5LW1vZGFsLWJvZHktb3Blbic7XG5cbiAgI2RvY1JlZjogYW55O1xuICAjYm9keUVsOiBIVE1MRWxlbWVudDtcblxuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG4gICNob3N0U2libGluZ0FyaWFIaWRkZW5DYWNoZSA9IG5ldyBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4oKTtcblxuICBjb25zdHJ1Y3Rvcih3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZikge1xuICAgIHRoaXMuI3dpbmRvd1JlZiA9IHdpbmRvd1JlZjtcbiAgICB0aGlzLiNkb2NSZWYgPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50O1xuICAgIHRoaXMuI2JvZHlFbCA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVGdWxsUGFnZU1vZGFsQ2xhc3MoaXNBZGRGdWxsOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzQWRkRnVsbCkge1xuICAgICAgdGhpcy4jYWRkQ2xhc3NUb0JvZHkoU2t5TW9kYWxBZGFwdGVyU2VydmljZS5NT0RBTF9CT0RZX0ZVTExfQ0xBU1MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW1vdmVDbGFzc0Zyb21Cb2R5KFNreU1vZGFsQWRhcHRlclNlcnZpY2UuTU9EQUxfQk9EWV9GVUxMX0NMQVNTKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZVNjcm9sbChpc0FkZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0FkZCkge1xuICAgICAgdGhpcy4jYWRkQ2xhc3NUb0JvZHkoU2t5TW9kYWxBZGFwdGVyU2VydmljZS5NT0RBTF9CT0RZX0NMQVNTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVtb3ZlQ2xhc3NGcm9tQm9keShTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlLk1PREFMX0JPRFlfQ0xBU1MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2RhbE9wZW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI2RvY1JlZi5hY3RpdmVFbGVtZW50O1xuICB9XG5cbiAgI2FkZENsYXNzVG9Cb2R5KGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jYm9keUVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgfVxuXG4gICNyZW1vdmVDbGFzc0Zyb21Cb2R5KGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jYm9keUVsLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxDb250ZW50VG9Ub3AoZWxlbWVudDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LW1vZGFsLWNvbnRlbnQnKS5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHNpYmxpbmdzIG9mIG1vZGFsLWhvc3QgZnJvbSBzY3JlZW4gcmVhZGVyc1xuICAgKiBAcGFyYW0gaG9zdEVsUmVmIHJlZmVyZW5jZSB0byBtb2RhbC1ob3N0IGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBoaWRlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnMoaG9zdEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSBob3N0RWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBob3N0U2libGluZ3MgPSBob3N0RWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob3N0U2libGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBob3N0U2libGluZ3NbaV07XG4gICAgICBpZiAoXG4gICAgICAgIGVsZW1lbnQgIT09IGhvc3RFbGVtZW50ICYmXG4gICAgICAgICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnYXJpYS1saXZlJykgJiZcbiAgICAgICAgZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnc2NyaXB0JyAmJlxuICAgICAgICBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdHlsZSdcbiAgICAgICkge1xuICAgICAgICAvLyBwcmVzZXJ2ZSBwcmV2aW91cyBhcmlhLWhpZGRlbiBzdGF0dXMgb2YgZWxlbWVudHMgb3V0c2lkZSBvZiBtb2RhbCBob3N0XG4gICAgICAgIHRoaXMuI2hvc3RTaWJsaW5nQXJpYUhpZGRlbkNhY2hlLnNldChcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG4gICAgICAgICk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIG1vZGFsLWhvc3Qgc2libGluZ3MgdG8gc2NyZWVuIHJlYWRlciBzdGF0dXMgcHJpb3IgdG8gbW9kYWxzIGJlaW5nIG9wZW5lZFxuICAgKi9cbiAgcHVibGljIHVuaGlkZU9yUmVzdG9yZUhvc3RTaWJsaW5nc0Zyb21TY3JlZW5SZWFkZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2hvc3RTaWJsaW5nQXJpYUhpZGRlbkNhY2hlLmZvckVhY2goKHByZXZpb3VzVmFsdWUsIGVsZW1lbnQpID0+IHtcbiAgICAgIC8vIGlmIGVsZW1lbnQgaGFkIGFyaWEtaGlkZGVuIHN0YXR1cyBwcmlvciwgcmVzdG9yZSBzdGF0dXNcbiAgICAgIGlmIChlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuI2hvc3RTaWJsaW5nQXJpYUhpZGRlbkNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZVByZXZpb3VzTW9kYWxGcm9tU2NyZWVuUmVhZGVycyh0b3BNb2RhbDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIGlmICh0b3BNb2RhbCAmJiB0b3BNb2RhbC5uYXRpdmVFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICAgIHRvcE1vZGFsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICdhcmlhLWhpZGRlbicsXG4gICAgICAgICd0cnVlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdW5oaWRlUHJldmlvdXNNb2RhbEZyb21TY3JlZW5SZWFkZXJzKHRvcE1vZGFsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgaWYgKHRvcE1vZGFsICYmIHRvcE1vZGFsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgICAgdG9wTW9kYWwubmF0aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLnJlbW92ZUF0dHJpYnV0ZShcbiAgICAgICAgJ2FyaWEtaGlkZGVuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@skyux/core";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export class SkyModalComponentAdapterService {
|
|
8
|
+
#coreAdapter;
|
|
9
|
+
constructor(coreAdapter) {
|
|
10
|
+
this.#coreAdapter = coreAdapter;
|
|
11
|
+
}
|
|
12
|
+
handleWindowChange(modalEl) {
|
|
13
|
+
const boundedHeightEl = modalEl.nativeElement.querySelector('.sky-modal');
|
|
14
|
+
const fullPageModalEl = modalEl.nativeElement.querySelector('.sky-modal-full-page');
|
|
15
|
+
/*
|
|
16
|
+
Set modal height equal to max height of window (accounting for padding above and below modal)
|
|
17
|
+
*/
|
|
18
|
+
const newHeight = window.innerHeight - 40;
|
|
19
|
+
boundedHeightEl.style.maxHeight = newHeight.toString() + 'px';
|
|
20
|
+
if (fullPageModalEl) {
|
|
21
|
+
this.#setFullPageHeight(fullPageModalEl);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
/*
|
|
25
|
+
IE11 doesn't handle flex and max-height correctly so we have to explicitly add
|
|
26
|
+
max-height to the content that accounts for standard header and footer height.
|
|
27
|
+
*/
|
|
28
|
+
const modalContentEl = modalEl.nativeElement.querySelector('.sky-modal-content');
|
|
29
|
+
const contentHeight = newHeight - 114;
|
|
30
|
+
modalContentEl.style.maxHeight = contentHeight.toString() + 'px';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
isFocusInFirstItem(event, list) {
|
|
34
|
+
/* istanbul ignore next */
|
|
35
|
+
/* sanity check */
|
|
36
|
+
const eventTarget = event.target || event.srcElement;
|
|
37
|
+
return list.length > 0 && eventTarget === list[0];
|
|
38
|
+
}
|
|
39
|
+
isFocusInLastItem(event, list) {
|
|
40
|
+
/* istanbul ignore next */
|
|
41
|
+
/* sanity check */
|
|
42
|
+
const eventTarget = event.target || event.srcElement;
|
|
43
|
+
return list.length > 0 && eventTarget === list[list.length - 1];
|
|
44
|
+
}
|
|
45
|
+
isModalFocused(event, modalEl) {
|
|
46
|
+
/* istanbul ignore next */
|
|
47
|
+
/* sanity check */
|
|
48
|
+
const eventTarget = event.target || event.srcElement;
|
|
49
|
+
return (modalEl &&
|
|
50
|
+
eventTarget === modalEl.nativeElement.querySelector('.sky-modal-dialog'));
|
|
51
|
+
}
|
|
52
|
+
focusLastElement(list) {
|
|
53
|
+
if (list.length > 0) {
|
|
54
|
+
list[list.length - 1].focus();
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
focusFirstElement(list) {
|
|
60
|
+
if (list.length > 0) {
|
|
61
|
+
list[0].focus();
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
modalContentHasDirectChildViewkeeper(modalContentEl) {
|
|
67
|
+
return !!modalContentEl.nativeElement.querySelector('sky-modal-content > .sky-viewkeeper-fixed');
|
|
68
|
+
}
|
|
69
|
+
modalOpened(modalEl) {
|
|
70
|
+
/* istanbul ignore else */
|
|
71
|
+
/* handle the case where somehow there is a focused element already in the modal */
|
|
72
|
+
if (!(document.activeElement &&
|
|
73
|
+
modalEl.nativeElement.contains(document.activeElement))) {
|
|
74
|
+
const currentScrollX = window.pageXOffset;
|
|
75
|
+
const currentScrollY = window.pageYOffset;
|
|
76
|
+
const inputWithAutofocus = modalEl.nativeElement.querySelector('[autofocus]');
|
|
77
|
+
if (inputWithAutofocus) {
|
|
78
|
+
inputWithAutofocus.focus();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.#coreAdapter.getFocusableChildrenAndApplyFocus(modalEl, '.sky-modal-content', true);
|
|
82
|
+
}
|
|
83
|
+
window.scrollTo(currentScrollX, currentScrollY);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
#setFullPageHeight(fullPageModalEl) {
|
|
87
|
+
const windowHeight = window.innerHeight;
|
|
88
|
+
const fullPageModalStyle = getComputedStyle(fullPageModalEl);
|
|
89
|
+
const marginTopBottom = parseInt(fullPageModalStyle.marginTop, 10) +
|
|
90
|
+
parseInt(fullPageModalStyle.marginBottom, 10);
|
|
91
|
+
const fullPageModalHeight = windowHeight - marginTopBottom + 'px';
|
|
92
|
+
fullPageModalEl.style.height = fullPageModalHeight;
|
|
93
|
+
fullPageModalEl.style.maxHeight = fullPageModalHeight;
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalComponentAdapterService, deps: [{ token: i1.SkyCoreAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
96
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalComponentAdapterService }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalComponentAdapterService, decorators: [{
|
|
99
|
+
type: Injectable
|
|
100
|
+
}], ctorParameters: function () { return [{ type: i1.SkyCoreAdapterService }]; } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29tcG9uZW50LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWNvbXBvbmVudC1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBR3ZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxZQUFZLENBQXdCO0lBRXBDLFlBQVksV0FBa0M7UUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQW1CO1FBQzNDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFFLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUN6RCxzQkFBc0IsQ0FDdkIsQ0FBQztRQUNGOztVQUVFO1FBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5RCxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNMOzs7Y0FHRTtZQUNGLE1BQU0sY0FBYyxHQUNsQixPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzVELE1BQU0sYUFBYSxHQUFHLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDdEMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsYUFBYSxD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LGVBQWUsR0FDbkIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDMUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLG1CQUFtQixHQUFHLFlBQVksR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRWxFLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDO1FBQ25ELGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDO0lBQ3hELENBQUM7OEdBOUhVLCtCQUErQjtrSEFBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZSB7XG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UpIHtcbiAgICB0aGlzLiNjb3JlQWRhcHRlciA9IGNvcmVBZGFwdGVyO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVdpbmRvd0NoYW5nZShtb2RhbEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgYm91bmRlZEhlaWdodEVsID0gbW9kYWxFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktbW9kYWwnKTtcbiAgICBjb25zdCBmdWxsUGFnZU1vZGFsRWwgPSBtb2RhbEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2t5LW1vZGFsLWZ1bGwtcGFnZSdcbiAgICApO1xuICAgIC8qXG4gICAgICBTZXQgbW9kYWwgaGVpZ2h0IGVxdWFsIHRvIG1heCBoZWlnaHQgb2Ygd2luZG93IChhY2NvdW50aW5nIGZvciBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyBtb2RhbClcbiAgICAqL1xuICAgIGNvbnN0IG5ld0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDQwO1xuXG4gICAgYm91bmRlZEhlaWdodEVsLnN0eWxlLm1heEhlaWdodCA9IG5ld0hlaWdodC50b1N0cmluZygpICsgJ3B4JztcbiAgICBpZiAoZnVsbFBhZ2VNb2RhbEVsKSB7XG4gICAgICB0aGlzLiNzZXRGdWxsUGFnZUhlaWdodChmdWxsUGFnZU1vZGFsRWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKlxuICAgICAgICBJRTExIGRvZXNuJ3QgaGFuZGxlIGZsZXggYW5kIG1heC1oZWlnaHQgY29ycmVjdGx5IHNvIHdlIGhhdmUgdG8gZXhwbGljaXRseSBhZGRcbiAgICAgICAgbWF4LWhlaWdodCB0byB0aGUgY29udGVudCB0aGF0IGFjY291bnRzIGZvciBzdGFuZGFyZCBoZWFkZXIgYW5kIGZvb3RlciBoZWlnaHQuXG4gICAgICAqL1xuICAgICAgY29uc3QgbW9kYWxDb250ZW50RWwgPVxuICAgICAgICBtb2RhbEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1tb2RhbC1jb250ZW50Jyk7XG4gICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gbmV3SGVpZ2h0IC0gMTE0O1xuICAgICAgbW9kYWxDb250ZW50RWwuc3R5bGUubWF4SGVpZ2h0ID0gY29udGVudEhlaWdodC50b1N0cmluZygpICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNGb2N1c0luRmlyc3RJdGVtKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgIGxpc3Q6IEFycmF5PEhUTUxFbGVtZW50PlxuICApOiBib29sZWFuIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgcmV0dXJuIGxpc3QubGVuZ3RoID4gMCAmJiBldmVudFRhcmdldCA9PT0gbGlzdFswXTtcbiAgfVxuXG4gIHB1YmxpYyBpc0ZvY3VzSW5MYXN0SXRlbShcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgICBsaXN0OiBBcnJheTxIVE1MRWxlbWVudD5cbiAgKTogYm9vbGVhbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xuICAgIHJldHVybiBsaXN0Lmxlbmd0aCA+IDAgJiYgZXZlbnRUYXJnZXQgPT09IGxpc3RbbGlzdC5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vZGFsRm9jdXNlZChldmVudDogS2V5Ym9hcmRFdmVudCwgbW9kYWxFbDogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICByZXR1cm4gKFxuICAgICAgbW9kYWxFbCAmJlxuICAgICAgZXZlbnRUYXJnZXQgPT09IG1vZGFsRWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LW1vZGFsLWRpYWxvZycpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0xhc3RFbGVtZW50KGxpc3Q6IEFycmF5PEhUTUxFbGVtZW50Pik6IGJvb2xlYW4ge1xuICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxpc3RbbGlzdC5sZW5ndGggLSAxXS5mb2N1cygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0ZpcnN0RWxlbWVudChsaXN0OiBBcnJheTxIVE1MRWxlbWVudD4pOiBib29sZWFuIHtcbiAgICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBsaXN0WzBdLmZvY3VzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG1vZGFsQ29udGVudEhhc0RpcmVjdENoaWxkVmlld2tlZXBlcihcbiAgICBtb2RhbENvbnRlbnRFbDogRWxlbWVudFJlZlxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFtb2RhbENvbnRlbnRFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnc2t5LW1vZGFsLWNvbnRlbnQgPiAuc2t5LXZpZXdrZWVwZXItZml4ZWQnXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RhbE9wZW5lZChtb2RhbEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgc29tZWhvdyB0aGVyZSBpcyBhIGZvY3VzZWQgZWxlbWVudCBhbHJlYWR5IGluIHRoZSBtb2RhbCAqL1xuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgbW9kYWxFbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCBjdXJyZW50U2Nyb2xsWCA9IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgICBjb25zdCBpbnB1dFdpdGhBdXRvZm9jdXMgPVxuICAgICAgICBtb2RhbEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2F1dG9mb2N1c10nKTtcblxuICAgICAgaWYgKGlucHV0V2l0aEF1dG9mb2N1cykge1xuICAgICAgICBpbnB1dFdpdGhBdXRvZm9jdXMuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2NvcmVBZGFwdGVyLmdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICAgICAgICBtb2RhbEVsLFxuICAgICAgICAgICcuc2t5LW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyhjdXJyZW50U2Nyb2xsWCwgY3VycmVudFNjcm9sbFkpO1xuICAgIH1cbiAgfVxuXG4gICNzZXRGdWxsUGFnZUhlaWdodChmdWxsUGFnZU1vZGFsRWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IGZ1bGxQYWdlTW9kYWxTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZnVsbFBhZ2VNb2RhbEVsKTtcblxuICAgIGNvbnN0IG1hcmdpblRvcEJvdHRvbSA9XG4gICAgICBwYXJzZUludChmdWxsUGFnZU1vZGFsU3R5bGUubWFyZ2luVG9wLCAxMCkgK1xuICAgICAgcGFyc2VJbnQoZnVsbFBhZ2VNb2RhbFN0eWxlLm1hcmdpbkJvdHRvbSwgMTApO1xuXG4gICAgY29uc3QgZnVsbFBhZ2VNb2RhbEhlaWdodCA9IHdpbmRvd0hlaWdodCAtIG1hcmdpblRvcEJvdHRvbSArICdweCc7XG5cbiAgICBmdWxsUGFnZU1vZGFsRWwuc3R5bGUuaGVpZ2h0ID0gZnVsbFBhZ2VNb2RhbEhlaWdodDtcbiAgICBmdWxsUGFnZU1vZGFsRWwuc3R5bGUubWF4SGVpZ2h0ID0gZnVsbFBhZ2VNb2RhbEhlaWdodDtcbiAgfVxufVxuIl19
|
|
@@ -7,13 +7,13 @@ export class SkyModalConfiguration {
|
|
|
7
7
|
constructor() {
|
|
8
8
|
this.size = 'medium';
|
|
9
9
|
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalConfiguration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalConfiguration, providedIn: 'any' }); }
|
|
10
12
|
}
|
|
11
|
-
|
|
12
|
-
SkyModalConfiguration.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalConfiguration, providedIn: 'any' });
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalConfiguration, decorators: [{
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalConfiguration, decorators: [{
|
|
14
14
|
type: Injectable,
|
|
15
15
|
args: [{
|
|
16
16
|
providedIn: 'any',
|
|
17
17
|
}]
|
|
18
18
|
}], ctorParameters: function () { return []; } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBVWhDO1FBQ0UsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDdkIsQ0FBQzs4R0FaVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZwQixLQUFLOzsyRkFFTixxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbENvbmZpZ3VyYXRpb24ge1xuICBwdWJsaWMgZnVsbFBhZ2U/OiBib29sZWFuO1xuICBwdWJsaWMgc2l6ZT86IHN0cmluZztcbiAgcHVibGljIGFyaWFEZXNjcmliZWRCeT86IHN0cmluZztcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuICBwdWJsaWMgYXJpYVJvbGU/OiBzdHJpbmc7XG4gIHB1YmxpYyB0aWxlZEJvZHk/OiBib29sZWFuO1xuICBwdWJsaWMgaGVscEtleT86IHN0cmluZztcbiAgcHVibGljIHdyYXBwZXJDbGFzcz86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNpemUgPSAnbWVkaXVtJztcbiAgfVxufVxuIl19
|
|
@@ -4,11 +4,11 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
* Specifies content to display in the modal's body.
|
|
5
5
|
*/
|
|
6
6
|
export class SkyModalContentComponent {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyModalContentComponent, selector: "sky-modal-content", ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["sky-modal-content{display:block;min-height:100%}.sky-theme-modern sky-modal-content{padding:10px 30px 30px}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
SkyModalContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyModalContentComponent, selector: "sky-modal-content", ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["sky-modal-content{display:block;min-height:100%}.sky-theme-modern sky-modal-content{padding:10px 30px 30px}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalContentComponent, decorators: [{
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalContentComponent, decorators: [{
|
|
11
11
|
type: Component,
|
|
12
12
|
args: [{ selector: 'sky-modal-content', encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n", styles: ["sky-modal-content{display:block;min-height:100%}.sky-theme-modern sky-modal-content{padding:10px 30px 30px}\n"] }]
|
|
13
13
|
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFN0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8sd0JBQXdCOzhHQUF4Qix3QkFBd0I7a0dBQXhCLHdCQUF3Qix5RENYckMsNkJBQ0E7OzJGRFVhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgY29udGVudCB0byBkaXNwbGF5IGluIHRoZSBtb2RhbCdzIGJvZHkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1tb2RhbC1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsQ29udGVudENvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export class SkyModalErrorsService {
|
|
8
|
+
#formErrors = new BehaviorSubject(undefined);
|
|
9
|
+
constructor() {
|
|
10
|
+
this.formErrors = this.#formErrors.asObservable();
|
|
11
|
+
}
|
|
12
|
+
updateErrors(value) {
|
|
13
|
+
this.#formErrors.next(value);
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalErrorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalErrorsService }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalErrorsService, decorators: [{
|
|
19
|
+
type: Injectable
|
|
20
|
+
}], ctorParameters: function () { return []; } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZXJyb3JzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1lcnJvcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBSW5EOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQThCLFNBQVMsQ0FBQyxDQUFDO0lBRTFFO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFTSxZQUFZLENBQUMsS0FBa0M7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs4R0FYVSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreU1vZGFsRXJyb3IgfSBmcm9tICcuL21vZGFsLWVycm9yJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsRXJyb3JzU2VydmljZSB7XG4gIHB1YmxpYyBmb3JtRXJyb3JzOiBPYnNlcnZhYmxlPFNreU1vZGFsRXJyb3JbXSB8IHVuZGVmaW5lZD47XG5cbiAgI2Zvcm1FcnJvcnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreU1vZGFsRXJyb3JbXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZvcm1FcnJvcnMgPSB0aGlzLiNmb3JtRXJyb3JzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUVycm9ycyh2YWx1ZTogU2t5TW9kYWxFcnJvcltdIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jZm9ybUVycm9ycy5uZXh0KHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -10,11 +10,11 @@ export class SkyModalFooterComponent {
|
|
|
10
10
|
constructor() {
|
|
11
11
|
this.errorsSvc = inject(SkyModalErrorsService);
|
|
12
12
|
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyModalFooterComponent, selector: "sky-modal-footer", ngImport: i0, template: "<div class=\"sky-modal-footer-container sky-padding-even-large\">\n <div aria-live=\"polite\">\n <div\n *ngIf=\"errorsSvc.formErrors | async as formErrors\"\n class=\"sky-modal-footer-errors sky-margin-stacked-lg\"\n >\n <sky-status-indicator\n *ngFor=\"let formError of formErrors\"\n [ngClass]=\"{\n 'sky-margin-stacked-lg':\n formErrors.indexOf(formError) < formErrors.length - 1,\n 'footer-error': true\n }\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n >\n {{ formError.message }}\n </sky-status-indicator>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-modal-footer-container{background-color:#fff;border-top:1px solid #e2e3e4}.sky-modal-footer-container .sky-btn-link:first-child{margin-left:-12px}.sky-modal-footer-container .sky-btn+.sky-btn{margin-left:10px}.sky-modal-footer-container .sky-btn+.sky-btn-link{margin-left:-2px}.sky-modal-footer-container .sky-modal-footer-errors{max-height:100px;overflow-y:auto}.sky-modal-footer-container .sky-modal-footer-errors .footer-error{display:block}.sky-theme-modern .sky-modal-footer-container{border-top:none;padding:20px 30px}.sky-theme-modern .sky-modal-footer-container .sky-btn-link:first-child{margin-left:0}.sky-theme-modern .sky-modal-footer-container .sky-btn+.sky-btn-link{margin-left:var(--sky-compat-modal-footer-adjacent-btn-btn-link-margin, 10px)}.sky-theme-modern-dark .sky-modal-footer-container{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
SkyModalFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyModalFooterComponent, selector: "sky-modal-footer", ngImport: i0, template: "<div class=\"sky-modal-footer-container sky-padding-even-large\">\n <div aria-live=\"polite\">\n <div\n *ngIf=\"errorsSvc.formErrors | async as formErrors\"\n class=\"sky-modal-footer-errors sky-margin-stacked-lg\"\n >\n <sky-status-indicator\n *ngFor=\"let formError of formErrors\"\n [ngClass]=\"{\n 'sky-margin-stacked-lg':\n formErrors.indexOf(formError) < formErrors.length - 1,\n 'footer-error': true\n }\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n >\n {{ formError.message }}\n </sky-status-indicator>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-modal-footer-container{background-color:#fff;border-top:1px solid #e2e3e4}.sky-modal-footer-container .sky-btn-link:first-child{margin-left:-12px}.sky-modal-footer-container .sky-btn+.sky-btn{margin-left:10px}.sky-modal-footer-container .sky-btn+.sky-btn-link{margin-left:-2px}.sky-modal-footer-container .sky-modal-footer-errors{max-height:100px;overflow-y:auto}.sky-modal-footer-container .sky-modal-footer-errors .footer-error{display:block}.sky-theme-modern .sky-modal-footer-container{border-top:none;padding:20px 30px}.sky-theme-modern .sky-modal-footer-container .sky-btn-link:first-child{margin-left:0}.sky-theme-modern .sky-modal-footer-container .sky-btn+.sky-btn-link{margin-left:var(--sky-compat-modal-footer-adjacent-btn-btn-link-margin, 10px)}.sky-theme-modern-dark .sky-modal-footer-container{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalFooterComponent, decorators: [{
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalFooterComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'sky-modal-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"sky-modal-footer-container sky-padding-even-large\">\n <div aria-live=\"polite\">\n <div\n *ngIf=\"errorsSvc.formErrors | async as formErrors\"\n class=\"sky-modal-footer-errors sky-margin-stacked-lg\"\n >\n <sky-status-indicator\n *ngFor=\"let formError of formErrors\"\n [ngClass]=\"{\n 'sky-margin-stacked-lg':\n formErrors.indexOf(formError) < formErrors.length - 1,\n 'footer-error': true\n }\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n >\n {{ formError.message }}\n </sky-status-indicator>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-modal-footer-container{background-color:#fff;border-top:1px solid #e2e3e4}.sky-modal-footer-container .sky-btn-link:first-child{margin-left:-12px}.sky-modal-footer-container .sky-btn+.sky-btn{margin-left:10px}.sky-modal-footer-container .sky-btn+.sky-btn-link{margin-left:-2px}.sky-modal-footer-container .sky-modal-footer-errors{max-height:100px;overflow-y:auto}.sky-modal-footer-container .sky-modal-footer-errors .footer-error{display:block}.sky-theme-modern .sky-modal-footer-container{border-top:none;padding:20px 30px}.sky-theme-modern .sky-modal-footer-container .sky-btn-link:first-child{margin-left:0}.sky-theme-modern .sky-modal-footer-container .sky-btn+.sky-btn-link{margin-left:var(--sky-compat-modal-footer-adjacent-btn-btn-link-margin, 10px)}.sky-theme-modern-dark .sky-modal-footer-container{background-color:transparent}\n"] }]
|
|
19
19
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFL0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBT1ksY0FBUyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3JEOzhHQUZZLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHdEQ2JwQyxpckJBc0JBOzsyRkRUYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5TW9kYWxFcnJvcnNTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1lcnJvcnMuc2VydmljZSc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGNvbnRlbnQgdG8gZGlzcGxheSBpbiB0aGUgbW9kYWwncyBmb290ZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1tb2RhbC1mb290ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtZm9vdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsRm9vdGVyQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGVycm9yc1N2YyA9IGluamVjdChTa3lNb2RhbEVycm9yc1NlcnZpY2UpO1xufVxuIiwiPGRpdiBjbGFzcz1cInNreS1tb2RhbC1mb290ZXItY29udGFpbmVyIHNreS1wYWRkaW5nLWV2ZW4tbGFyZ2VcIj5cbiAgPGRpdiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImVycm9yc1N2Yy5mb3JtRXJyb3JzIHwgYXN5bmMgYXMgZm9ybUVycm9yc1wiXG4gICAgICBjbGFzcz1cInNreS1tb2RhbC1mb290ZXItZXJyb3JzIHNreS1tYXJnaW4tc3RhY2tlZC1sZ1wiXG4gICAgPlxuICAgICAgPHNreS1zdGF0dXMtaW5kaWNhdG9yXG4gICAgICAgICpuZ0Zvcj1cImxldCBmb3JtRXJyb3Igb2YgZm9ybUVycm9yc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LW1hcmdpbi1zdGFja2VkLWxnJzpcbiAgICAgICAgICAgIGZvcm1FcnJvcnMuaW5kZXhPZihmb3JtRXJyb3IpIDwgZm9ybUVycm9ycy5sZW5ndGggLSAxLFxuICAgICAgICAgICdmb290ZXItZXJyb3InOiB0cnVlXG4gICAgICAgIH1cIlxuICAgICAgICBkZXNjcmlwdGlvblR5cGU9XCJlcnJvclwiXG4gICAgICAgIGluZGljYXRvclR5cGU9XCJkYW5nZXJcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtRXJyb3IubWVzc2FnZSB9fVxuICAgICAgPC9za3ktc3RhdHVzLWluZGljYXRvcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
@@ -6,11 +6,11 @@ import * as i2 from "@skyux/core";
|
|
|
6
6
|
* Specifies a header for the modal.
|
|
7
7
|
*/
|
|
8
8
|
export class SkyModalHeaderComponent {
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyModalHeaderComponent, selector: "sky-modal-header", ngImport: i0, template: "<h2\n class=\"sky-font-emphasized\"\n [skyThemeClass]=\"{\n 'sky-font-heading-4': 'default',\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n>\n <ng-content></ng-content>\n</h2>\n<span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n></span>\n", styles: ["h2{margin:0;line-height:1.2;display:inline}:host-context(.sky-theme-modern.sky-theme-mode-dark) h2{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark h2{color:#fbfcfe}\n"], dependencies: [{ kind: "directive", type: i1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i2.λ4, selector: "[skyTrim]" }] }); }
|
|
9
11
|
}
|
|
10
|
-
|
|
11
|
-
SkyModalHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyModalHeaderComponent, selector: "sky-modal-header", ngImport: i0, template: "<h2\n class=\"sky-font-emphasized\"\n [skyThemeClass]=\"{\n 'sky-font-heading-4': 'default',\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n>\n <ng-content></ng-content>\n</h2>\n<span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n></span>\n", styles: ["h2{margin:0;line-height:1.2;display:inline}:host-context(.sky-theme-modern.sky-theme-mode-dark) h2{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark h2{color:#fbfcfe}\n"], dependencies: [{ kind: "directive", type: i1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i2.λ4, selector: "[skyTrim]" }] });
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalHeaderComponent, decorators: [{
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHeaderComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
14
14
|
args: [{ selector: 'sky-modal-header', template: "<h2\n class=\"sky-font-emphasized\"\n [skyThemeClass]=\"{\n 'sky-font-heading-4': 'default',\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n>\n <ng-content></ng-content>\n</h2>\n<span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n></span>\n", styles: ["h2{margin:0;line-height:1.2;display:inline}:host-context(.sky-theme-modern.sky-theme-mode-dark) h2{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark h2{color:#fbfcfe}\n"] }]
|
|
15
15
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUUxQzs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHdEQ1ZwQywwVEFhQTs7MkZESGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBhIGhlYWRlciBmb3IgdGhlIG1vZGFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbW9kYWwtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEhlYWRlckNvbXBvbmVudCB7fVxuIiwiPGgyXG4gIGNsYXNzPVwic2t5LWZvbnQtZW1waGFzaXplZFwiXG4gIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAnc2t5LWZvbnQtaGVhZGluZy00JzogJ2RlZmF1bHQnLFxuICAgICdza3ktZm9udC1kaXNwbGF5LTMnOiAnbW9kZXJuJ1xuICB9XCJcbiAgc2t5VHJpbVxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2gyPlxuPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiIHNreVRyaW1cbiAgPjxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktY29udHJvbC1oZWxwXCI+PC9uZy1jb250ZW50XG4+PC9zcGFuPlxuIl19
|
|
@@ -9,13 +9,13 @@ export class SkyModalHostContext {
|
|
|
9
9
|
constructor(args) {
|
|
10
10
|
this.args = args;
|
|
11
11
|
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostContext, deps: [{ token: 'SkyModalHostContextArgs' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostContext }); }
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
SkyModalHostContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalHostContext });
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyModalHostContext, decorators: [{
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostContext, decorators: [{
|
|
16
16
|
type: Injectable
|
|
17
17
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
18
18
|
type: Inject,
|
|
19
19
|
args: ['SkyModalHostContextArgs']
|
|
20
20
|
}] }]; } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaG9zdC1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwtaG9zdC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUluRDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUM0QyxJQUE2QjtRQUE3QixTQUFJLEdBQUosSUFBSSxDQUF5QjtJQUN0RSxDQUFDOzhHQUhPLG1CQUFtQixrQkFFcEIseUJBQXlCO2tIQUZ4QixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreU1vZGFsSG9zdENvbnRleHRBcmdzIH0gZnJvbSAnLi9tb2RhbC1ob3N0LWNvbnRleHQtYXJncyc7XG5cbi8qKlxuICogUHJvdmlkZWQgYnkgdGhlIG1vZGFsIHNlcnZpY2UgdG8gZ2l2ZSB0aGUgbW9kYWwgaG9zdFxuICogY29tcG9uZW50IGFkZGl0aW9uYWwgY29udGV4dCBhbmQgZmVhdHVyZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsSG9zdENvbnRleHQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdTa3lNb2RhbEhvc3RDb250ZXh0QXJncycpIHB1YmxpYyBhcmdzOiBTa3lNb2RhbEhvc3RDb250ZXh0QXJnc1xuICApIHt9XG59XG4iXX0=
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Component, Injector, Optional, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import { NavigationStart } from '@angular/router';
|
|
3
|
+
import { SKY_STACKING_CONTEXT, SkyMediaQueryService, SkyResizeObserverMediaQueryService, } from '@skyux/core';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { takeUntil, takeWhile } from 'rxjs/operators';
|
|
6
|
+
import { SkyModalAdapterService } from './modal-adapter.service';
|
|
7
|
+
import { SkyModalConfiguration } from './modal-configuration';
|
|
8
|
+
import { SkyModalHostService } from './modal-host.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./modal-adapter.service";
|
|
11
|
+
import * as i2 from "./modal-host-context";
|
|
12
|
+
import * as i3 from "@angular/router";
|
|
13
|
+
import * as i4 from "@angular/common";
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export class SkyModalHostComponent {
|
|
18
|
+
get modalOpen() {
|
|
19
|
+
return SkyModalHostService.openModalCount > 0;
|
|
20
|
+
}
|
|
21
|
+
get backdropZIndex() {
|
|
22
|
+
return SkyModalHostService.backdropZIndex;
|
|
23
|
+
}
|
|
24
|
+
#resolver;
|
|
25
|
+
#adapter;
|
|
26
|
+
#injector;
|
|
27
|
+
#router;
|
|
28
|
+
#changeDetector;
|
|
29
|
+
#modalHostContext;
|
|
30
|
+
#elRef;
|
|
31
|
+
#modalInstances = [];
|
|
32
|
+
constructor(resolver, adapter, injector, changeDetector, modalHostContext, elRef, router) {
|
|
33
|
+
this.#resolver = resolver;
|
|
34
|
+
this.#adapter = adapter;
|
|
35
|
+
this.#injector = injector;
|
|
36
|
+
this.#router = router;
|
|
37
|
+
this.#changeDetector = changeDetector;
|
|
38
|
+
this.#modalHostContext = modalHostContext;
|
|
39
|
+
this.#elRef = elRef;
|
|
40
|
+
}
|
|
41
|
+
ngOnDestroy() {
|
|
42
|
+
// Close all modal instances before disposing of the host container.
|
|
43
|
+
this.#closeAllModalInstances();
|
|
44
|
+
this.#modalHostContext.args.teardownCallback();
|
|
45
|
+
}
|
|
46
|
+
open(modalInstance, component, config) {
|
|
47
|
+
/* Ignore coverage as we specify the target element and so the view child should never be undefined unless
|
|
48
|
+
* we were to call the `open` method in an early lifecycle hook. */
|
|
49
|
+
/* istanbul ignore next */
|
|
50
|
+
if (!this.target) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const params = Object.assign({}, config);
|
|
54
|
+
const factory = this.#resolver.resolveComponentFactory(component);
|
|
55
|
+
const hostService = new SkyModalHostService();
|
|
56
|
+
hostService.fullPage = !!params.fullPage;
|
|
57
|
+
const adapter = this.#adapter;
|
|
58
|
+
const modalOpener = adapter.getModalOpener();
|
|
59
|
+
let isOpen = true;
|
|
60
|
+
params.providers ||= [];
|
|
61
|
+
params.providers.push({
|
|
62
|
+
provide: SkyModalHostService,
|
|
63
|
+
useValue: hostService,
|
|
64
|
+
}, {
|
|
65
|
+
provide: SkyModalConfiguration,
|
|
66
|
+
useValue: params,
|
|
67
|
+
}, {
|
|
68
|
+
provide: SkyMediaQueryService,
|
|
69
|
+
useExisting: SkyResizeObserverMediaQueryService,
|
|
70
|
+
}, {
|
|
71
|
+
provide: SKY_STACKING_CONTEXT,
|
|
72
|
+
useValue: {
|
|
73
|
+
zIndex: new BehaviorSubject(hostService.getModalZIndex())
|
|
74
|
+
.asObservable()
|
|
75
|
+
.pipe(takeUntil(modalInstance.closed)),
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
adapter.setPageScroll(SkyModalHostService.openModalCount > 0);
|
|
79
|
+
adapter.toggleFullPageModalClass(SkyModalHostService.fullPageModalCount > 0);
|
|
80
|
+
const providers = params.providers || /* istanbul ignore next */ [];
|
|
81
|
+
const injector = Injector.create({
|
|
82
|
+
providers,
|
|
83
|
+
parent: this.#injector,
|
|
84
|
+
});
|
|
85
|
+
const modalComponentRef = this.target.createComponent(factory, undefined, injector);
|
|
86
|
+
// modal element that was just opened
|
|
87
|
+
const modalElement = modalComponentRef.location;
|
|
88
|
+
modalInstance.adapter = this.#adapter;
|
|
89
|
+
modalInstance.componentRef = modalComponentRef;
|
|
90
|
+
this.#registerModalInstance(modalInstance);
|
|
91
|
+
// hiding all elements at the modal-host level from screen readers when the a modal is opened
|
|
92
|
+
this.#adapter.hideHostSiblingsFromScreenReaders(this.#elRef);
|
|
93
|
+
if (SkyModalHostService.openModalCount > 1 &&
|
|
94
|
+
SkyModalHostService.topModal === hostService) {
|
|
95
|
+
// hiding the lower modals when more than one modal is opened
|
|
96
|
+
this.#adapter.hidePreviousModalFromScreenReaders(modalElement);
|
|
97
|
+
}
|
|
98
|
+
const closeModal = () => {
|
|
99
|
+
// unhide siblings if last modal is closing
|
|
100
|
+
if (SkyModalHostService.openModalCount === 1) {
|
|
101
|
+
this.#adapter.unhideOrRestoreHostSiblingsFromScreenReaders();
|
|
102
|
+
}
|
|
103
|
+
else if (SkyModalHostService.topModal === hostService) {
|
|
104
|
+
// if there are more than 1 modal then unhide the one behind this one before closing it
|
|
105
|
+
this.#adapter.unhidePreviousModalFromScreenReaders(modalElement);
|
|
106
|
+
}
|
|
107
|
+
hostService.destroy();
|
|
108
|
+
adapter.setPageScroll(SkyModalHostService.openModalCount > 0);
|
|
109
|
+
adapter.toggleFullPageModalClass(SkyModalHostService.fullPageModalCount > 0);
|
|
110
|
+
/* istanbul ignore else */
|
|
111
|
+
/* sanity check */
|
|
112
|
+
if (modalOpener && modalOpener.focus) {
|
|
113
|
+
modalOpener.focus();
|
|
114
|
+
}
|
|
115
|
+
modalComponentRef.destroy();
|
|
116
|
+
};
|
|
117
|
+
hostService.openHelp.subscribe((helpKey) => {
|
|
118
|
+
modalInstance.openHelp(helpKey);
|
|
119
|
+
});
|
|
120
|
+
hostService.close.subscribe(() => {
|
|
121
|
+
modalInstance.close();
|
|
122
|
+
});
|
|
123
|
+
this.#router?.events.pipe(takeWhile(() => isOpen)).subscribe((event) => {
|
|
124
|
+
/* istanbul ignore else */
|
|
125
|
+
if (event instanceof NavigationStart) {
|
|
126
|
+
modalInstance.close();
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
modalInstance.closed.subscribe(() => {
|
|
130
|
+
isOpen = false;
|
|
131
|
+
this.#unregisterModalInstance(modalInstance);
|
|
132
|
+
closeModal();
|
|
133
|
+
});
|
|
134
|
+
// Necessary if the host was created via a consumer's lifecycle hook such as ngOnInit
|
|
135
|
+
this.#changeDetector.detectChanges();
|
|
136
|
+
}
|
|
137
|
+
#registerModalInstance(instance) {
|
|
138
|
+
this.#modalInstances.push(instance);
|
|
139
|
+
}
|
|
140
|
+
#unregisterModalInstance(instance) {
|
|
141
|
+
this.#modalInstances.slice(this.#modalInstances.indexOf(instance), 1);
|
|
142
|
+
}
|
|
143
|
+
#closeAllModalInstances() {
|
|
144
|
+
for (const instance of this.#modalInstances) {
|
|
145
|
+
instance.close();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.SkyModalAdapterService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i2.SkyModalHostContext }, { token: i0.ElementRef }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyModalHostComponent, selector: "sky-modal-host", viewQueries: [{ propertyName: "target", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-modal-host-backdrop\"\n [hidden]=\"!modalOpen\"\n [ngStyle]=\"{\n zIndex: backdropZIndex\n }\"\n></div>\n<div #target></div>\n", styles: [".sky-modal-host-backdrop{background-color:#00000080;position:fixed;inset:0}\n"], dependencies: [{ kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], viewProviders: [SkyModalAdapterService] }); }
|
|
150
|
+
}
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostComponent, decorators: [{
|
|
152
|
+
type: Component,
|
|
153
|
+
args: [{ selector: 'sky-modal-host', viewProviders: [SkyModalAdapterService], template: "<div\n class=\"sky-modal-host-backdrop\"\n [hidden]=\"!modalOpen\"\n [ngStyle]=\"{\n zIndex: backdropZIndex\n }\"\n></div>\n<div #target></div>\n", styles: [".sky-modal-host-backdrop{background-color:#00000080;position:fixed;inset:0}\n"] }]
|
|
154
|
+
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.SkyModalAdapterService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i2.SkyModalHostContext }, { type: i0.ElementRef }, { type: i3.Router, decorators: [{
|
|
155
|
+
type: Optional
|
|
156
|
+
}] }]; }, propDecorators: { target: [{
|
|
157
|
+
type: ViewChild,
|
|
158
|
+
args: ['target', {
|
|
159
|
+
read: ViewContainerRef,
|
|
160
|
+
static: true,
|
|
161
|
+
}]
|
|
162
|
+
}] } });
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaG9zdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1ob3N0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWhvc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFHVCxRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLGtDQUFrQyxHQUNuQyxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUkzRDs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sbUJBQW1CLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sbUJBQW1CLENBQUMsY0FBYyxDQUFDO0lBQzVDLENBQUM7SUFjRCxTQUFTLENBQTJCO0lB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Q0FBQyxRQUEwQjtRQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMzQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDOzhHQXBNVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixtSUFnQnhCLGdCQUFnQiwyQ0NyRDFCLDBKQVFBLGlORDJCaUIsQ0FBQyxzQkFBc0IsQ0FBQzs7MkZBRTVCLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsQ0FBQyxzQkFBc0IsQ0FBQzs7MEJBd0NwQyxRQUFROzRDQW5CSixNQUFNO3NCQUpaLFNBQVM7dUJBQUMsUUFBUSxFQUFFO3dCQUNuQixJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixNQUFNLEVBQUUsSUFBSTtxQkFDTiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5TW9kYWxBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU1vZGFsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kYWwtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBTa3lNb2RhbEhvc3RDb250ZXh0IH0gZnJvbSAnLi9tb2RhbC1ob3N0LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5TW9kYWxIb3N0U2VydmljZSB9IGZyb20gJy4vbW9kYWwtaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UgfSBmcm9tICcuL21vZGFsLWluc3RhbmNlJztcbmltcG9ydCB7IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSB9IGZyb20gJy4vbW9kYWwuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LW1vZGFsLWhvc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtaG9zdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWhvc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW1NreU1vZGFsQWRhcHRlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEhvc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZ2V0IG1vZGFsT3BlbigpIHtcbiAgICByZXR1cm4gU2t5TW9kYWxIb3N0U2VydmljZS5vcGVuTW9kYWxDb3VudCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJhY2tkcm9wWkluZGV4KCkge1xuICAgIHJldHVybiBTa3lNb2RhbEhvc3RTZXJ2aWNlLmJhY2tkcm9wWkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBgYW55YCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2l0aCBBbmd1bGFyIDQtNy5cbiAgICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMDY1NFxuICAgKiBUT0RPOiBSZW1vdmUgdGhlIGBhbnlgIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcsIHtcbiAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSBhcyBhbnkpXG4gIHB1YmxpYyB0YXJnZXQ6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI3Jlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG4gICNhZGFwdGVyOiBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlO1xuICAjaW5qZWN0b3I6IEluamVjdG9yO1xuICAjcm91dGVyOiBSb3V0ZXIgfCB1bmRlZmluZWQ7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNtb2RhbEhvc3RDb250ZXh0OiBTa3lNb2RhbEhvc3RDb250ZXh0O1xuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG5cbiAgI21vZGFsSW5zdGFuY2VzOiBTa3lNb2RhbEluc3RhbmNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIGFkYXB0ZXI6IFNreU1vZGFsQWRhcHRlclNlcnZpY2UsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBtb2RhbEhvc3RDb250ZXh0OiBTa3lNb2RhbEhvc3RDb250ZXh0LFxuICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIHJvdXRlcj86IFJvdXRlclxuICApIHtcbiAgICB0aGlzLiNyZXNvbHZlciA9IHJlc29sdmVyO1xuICAgIHRoaXMuI2FkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHRoaXMuI2luamVjdG9yID0gaW5qZWN0b3I7XG4gICAgdGhpcy4jcm91dGVyID0gcm91dGVyO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jbW9kYWxIb3N0Q29udGV4dCA9IG1vZGFsSG9zdENvbnRleHQ7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbG9zZSBhbGwgbW9kYWwgaW5zdGFuY2VzIGJlZm9yZSBkaXNwb3Npbmcgb2YgdGhlIGhvc3QgY29udGFpbmVyLlxuICAgIHRoaXMuI2Nsb3NlQWxsTW9kYWxJbnN0YW5jZXMoKTtcbiAgICB0aGlzLiNtb2RhbEhvc3RDb250ZXh0LmFyZ3MudGVhcmRvd25DYWxsYmFjaygpO1xuICB9XG5cbiAgcHVibGljIG9wZW4oXG4gICAgbW9kYWxJbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZSxcbiAgICBjb21wb25lbnQ6IGFueSxcbiAgICBjb25maWc/OiBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2VcbiAgKTogdm9pZCB7XG4gICAgLyogSWdub3JlIGNvdmVyYWdlIGFzIHdlIHNwZWNpZnkgdGhlIHRhcmdldCBlbGVtZW50IGFuZCBzbyB0aGUgdmlldyBjaGlsZCBzaG91bGQgbmV2ZXIgYmUgdW5kZWZpbmVkIHVubGVzc1xuICAgICAqIHdlIHdlcmUgdG8gY2FsbCB0aGUgYG9wZW5gIG1ldGhvZCBpbiBhbiBlYXJseSBsaWZlY3ljbGUgaG9vay4gKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXM6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSA9IE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuI3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG5cbiAgICBjb25zdCBob3N0U2VydmljZSA9IG5ldyBTa3lNb2RhbEhvc3RTZXJ2aWNlKCk7XG4gICAgaG9zdFNlcnZpY2UuZnVsbFBhZ2UgPSAhIXBhcmFtcy5mdWxsUGFnZTtcblxuICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLiNhZGFwdGVyO1xuICAgIGNvbnN0IG1vZGFsT3BlbmVyOiBIVE1MRWxlbWVudCA9IGFkYXB0ZXIuZ2V0TW9kYWxPcGVuZXIoKTtcblxuICAgIGxldCBpc09wZW4gPSB0cnVlO1xuXG4gICAgcGFyYW1zLnByb3ZpZGVycyB8fD0gW107XG4gICAgcGFyYW1zLnByb3ZpZGVycy5wdXNoKFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBTa3lNb2RhbEhvc3RTZXJ2aWNlLFxuICAgICAgICB1c2VWYWx1ZTogaG9zdFNlcnZpY2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBTa3lNb2RhbENvbmZpZ3VyYXRpb24sXG4gICAgICAgIHVzZVZhbHVlOiBwYXJhbXMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBTa3lNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICAgICAgdXNlRXhpc3Rpbmc6IFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICB6SW5kZXg6IG5ldyBCZWhhdmlvclN1YmplY3QoaG9zdFNlcnZpY2UuZ2V0TW9kYWxaSW5kZXgoKSlcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1vZGFsSW5zdGFuY2UuY2xvc2VkKSksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcblxuICAgIGFkYXB0ZXIuc2V0UGFnZVNjcm9sbChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCk7XG4gICAgYWRhcHRlci50b2dnbGVGdWxsUGFnZU1vZGFsQ2xhc3MoXG4gICAgICBTa3lNb2RhbEhvc3RTZXJ2aWNlLmZ1bGxQYWdlTW9kYWxDb3VudCA+IDBcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXJzID0gcGFyYW1zLnByb3ZpZGVycyB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuI2luamVjdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbW9kYWxDb21wb25lbnRSZWYgPSB0aGlzLnRhcmdldC5jcmVhdGVDb21wb25lbnQoXG4gICAgICBmYWN0b3J5LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuXG4gICAgLy8gbW9kYWwgZWxlbWVudCB0aGF0IHdhcyBqdXN0IG9wZW5lZFxuICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IG1vZGFsQ29tcG9uZW50UmVmLmxvY2F0aW9uO1xuXG4gICAgbW9kYWxJbnN0YW5jZS5hZGFwdGVyID0gdGhpcy4jYWRhcHRlcjtcbiAgICBtb2RhbEluc3RhbmNlLmNvbXBvbmVudFJlZiA9IG1vZGFsQ29tcG9uZW50UmVmO1xuXG4gICAgdGhpcy4jcmVnaXN0ZXJNb2RhbEluc3RhbmNlKG1vZGFsSW5zdGFuY2UpO1xuXG4gICAgLy8gaGlkaW5nIGFsbCBlbGVtZW50cyBhdCB0aGUgbW9kYWwtaG9zdCBsZXZlbCBmcm9tIHNjcmVlbiByZWFkZXJzIHdoZW4gdGhlIGEgbW9kYWwgaXMgb3BlbmVkXG4gICAgdGhpcy4jYWRhcHRlci5oaWRlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnModGhpcy4jZWxSZWYpO1xuICAgIGlmIChcbiAgICAgIFNreU1vZGFsSG9zdFNlcnZpY2Uub3Blbk1vZGFsQ291bnQgPiAxICYmXG4gICAgICBTa3lNb2RhbEhvc3RTZXJ2aWNlLnRvcE1vZGFsID09PSBob3N0U2VydmljZVxuICAgICkge1xuICAgICAgLy8gaGlkaW5nIHRoZSBsb3dlciBtb2RhbHMgd2hlbiBtb3JlIHRoYW4gb25lIG1vZGFsIGlzIG9wZW5lZFxuICAgICAgdGhpcy4jYWRhcHRlci5oaWRlUHJldmlvdXNNb2RhbEZyb21TY3JlZW5SZWFkZXJzKG1vZGFsRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIC8vIHVuaGlkZSBzaWJsaW5ncyBpZiBsYXN0IG1vZGFsIGlzIGNsb3NpbmdcbiAgICAgIGlmIChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID09PSAxKSB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXIudW5oaWRlT3JSZXN0b3JlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnMoKTtcbiAgICAgIH0gZWxzZSBpZiAoU2t5TW9kYWxIb3N0U2VydmljZS50b3BNb2RhbCA9PT0gaG9zdFNlcnZpY2UpIHtcbiAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiAxIG1vZGFsIHRoZW4gdW5oaWRlIHRoZSBvbmUgYmVoaW5kIHRoaXMgb25lIGJlZm9yZSBjbG9zaW5nIGl0XG4gICAgICAgIHRoaXMuI2FkYXB0ZXIudW5oaWRlUHJldmlvdXNNb2RhbEZyb21TY3JlZW5SZWFkZXJzKG1vZGFsRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGhvc3RTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgIGFkYXB0ZXIuc2V0UGFnZVNjcm9sbChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCk7XG4gICAgICBhZGFwdGVyLnRvZ2dsZUZ1bGxQYWdlTW9kYWxDbGFzcyhcbiAgICAgICAgU2t5TW9kYWxIb3N0U2VydmljZS5mdWxsUGFnZU1vZGFsQ291bnQgPiAwXG4gICAgICApO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgaWYgKG1vZGFsT3BlbmVyICYmIG1vZGFsT3BlbmVyLmZvY3VzKSB7XG4gICAgICAgIG1vZGFsT3BlbmVyLmZvY3VzKCk7XG4gICAgICB9XG4gICAgICBtb2RhbENvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfTtcblxuICAgIGhvc3RTZXJ2aWNlLm9wZW5IZWxwLnN1YnNjcmliZSgoaGVscEtleSkgPT4ge1xuICAgICAgbW9kYWxJbnN0YW5jZS5vcGVuSGVscChoZWxwS2V5KTtcbiAgICB9KTtcblxuICAgIGhvc3RTZXJ2aWNlLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBtb2RhbEluc3RhbmNlLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNyb3V0ZXI/LmV2ZW50cy5waXBlKHRha2VXaGlsZSgoKSA9PiBpc09wZW4pKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIG1vZGFsSW5zdGFuY2UuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG1vZGFsSW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpc09wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuI3VucmVnaXN0ZXJNb2RhbEluc3RhbmNlKG1vZGFsSW5zdGFuY2UpO1xuICAgICAgY2xvc2VNb2RhbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gTmVjZXNzYXJ5IGlmIHRoZSBob3N0IHdhcyBjcmVhdGVkIHZpYSBhIGNvbnN1bWVyJ3MgbGlmZWN5Y2xlIGhvb2sgc3VjaCBhcyBuZ09uSW5pdFxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gICNyZWdpc3Rlck1vZGFsSW5zdGFuY2UoaW5zdGFuY2U6IFNreU1vZGFsSW5zdGFuY2UpOiB2b2lkIHtcbiAgICB0aGlzLiNtb2RhbEluc3RhbmNlcy5wdXNoKGluc3RhbmNlKTtcbiAgfVxuXG4gICN1bnJlZ2lzdGVyTW9kYWxJbnN0YW5jZShpbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZSk6IHZvaWQge1xuICAgIHRoaXMuI21vZGFsSW5zdGFuY2VzLnNsaWNlKHRoaXMuI21vZGFsSW5zdGFuY2VzLmluZGV4T2YoaW5zdGFuY2UpLCAxKTtcbiAgfVxuXG4gICNjbG9zZUFsbE1vZGFsSW5zdGFuY2VzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgdGhpcy4jbW9kYWxJbnN0YW5jZXMpIHtcbiAgICAgIGluc3RhbmNlLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LW1vZGFsLWhvc3QtYmFja2Ryb3BcIlxuICBbaGlkZGVuXT1cIiFtb2RhbE9wZW5cIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgekluZGV4OiBiYWNrZHJvcFpJbmRleFxuICB9XCJcbj48L2Rpdj5cbjxkaXYgI3RhcmdldD48L2Rpdj5cbiJdfQ==
|