@skyux/modals 6.17.0 → 6.17.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.
@@ -1,4 +1,4 @@
1
- var _SkyModalAdapterService_instances, _SkyModalAdapterService_docRef, _SkyModalAdapterService_bodyEl, _SkyModalAdapterService_windowRef, _SkyModalAdapterService_addClassToBody, _SkyModalAdapterService_removeClassFromBody;
1
+ var _SkyModalAdapterService_instances, _SkyModalAdapterService_docRef, _SkyModalAdapterService_bodyEl, _SkyModalAdapterService_windowRef, _SkyModalAdapterService_hostSiblingAriaHiddenCache, _SkyModalAdapterService_addClassToBody, _SkyModalAdapterService_removeClassFromBody;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { Injectable } from '@angular/core';
4
4
  import { SkyAppWindowRef } from '@skyux/core';
@@ -13,6 +13,7 @@ export class SkyModalAdapterService {
13
13
  _SkyModalAdapterService_docRef.set(this, void 0);
14
14
  _SkyModalAdapterService_bodyEl.set(this, void 0);
15
15
  _SkyModalAdapterService_windowRef.set(this, void 0);
16
+ _SkyModalAdapterService_hostSiblingAriaHiddenCache.set(this, new Map());
16
17
  __classPrivateFieldSet(this, _SkyModalAdapterService_windowRef, windowRef, "f");
17
18
  __classPrivateFieldSet(this, _SkyModalAdapterService_docRef, __classPrivateFieldGet(this, _SkyModalAdapterService_windowRef, "f").nativeWindow.document, "f");
18
19
  __classPrivateFieldSet(this, _SkyModalAdapterService_bodyEl, __classPrivateFieldGet(this, _SkyModalAdapterService_windowRef, "f").nativeWindow.document.body, "f");
@@ -36,8 +37,54 @@ export class SkyModalAdapterService {
36
37
  getModalOpener() {
37
38
  return __classPrivateFieldGet(this, _SkyModalAdapterService_docRef, "f").activeElement;
38
39
  }
40
+ /**
41
+ * Hides siblings of modal-host from screen readers
42
+ * @param hostElRef reference to modal-host element
43
+ */
44
+ hideHostSiblingsFromScreenReaders(hostElRef) {
45
+ const hostElement = hostElRef.nativeElement;
46
+ const hostSiblings = hostElement.parentElement.children;
47
+ for (let i = 0; i < hostSiblings.length; i++) {
48
+ const element = hostSiblings[i];
49
+ if (element !== hostElement &&
50
+ !element.hasAttribute('aria-live') &&
51
+ element.nodeName.toLowerCase() !== 'script' &&
52
+ element.nodeName.toLowerCase() !== 'style') {
53
+ // preserve previous aria-hidden status of elements outside of modal host
54
+ __classPrivateFieldGet(this, _SkyModalAdapterService_hostSiblingAriaHiddenCache, "f").set(element, element.getAttribute('aria-hidden'));
55
+ element.setAttribute('aria-hidden', 'true');
56
+ }
57
+ }
58
+ }
59
+ /**
60
+ * Restores modal-host siblings to screenreader status prior to modals being opened
61
+ */
62
+ unhideOrRestoreHostSiblingsFromScreenReaders() {
63
+ __classPrivateFieldGet(this, _SkyModalAdapterService_hostSiblingAriaHiddenCache, "f").forEach((previousValue, element) => {
64
+ // if element had aria-hidden status prior, restore status
65
+ if (element.parentElement) {
66
+ if (previousValue) {
67
+ element.setAttribute('aria-hidden', previousValue);
68
+ }
69
+ else {
70
+ element.removeAttribute('aria-hidden');
71
+ }
72
+ }
73
+ });
74
+ __classPrivateFieldGet(this, _SkyModalAdapterService_hostSiblingAriaHiddenCache, "f").clear();
75
+ }
76
+ hidePreviousModalFromScreenReaders(topModal) {
77
+ if (topModal && topModal.nativeElement.previousElementSibling) {
78
+ topModal.nativeElement.previousElementSibling.setAttribute('aria-hidden', 'true');
79
+ }
80
+ }
81
+ unhidePreviousModalFromScreenReaders(topModal) {
82
+ if (topModal && topModal.nativeElement.previousElementSibling) {
83
+ topModal.nativeElement.previousElementSibling.removeAttribute('aria-hidden');
84
+ }
85
+ }
39
86
  }
40
- _SkyModalAdapterService_docRef = new WeakMap(), _SkyModalAdapterService_bodyEl = new WeakMap(), _SkyModalAdapterService_windowRef = new WeakMap(), _SkyModalAdapterService_instances = new WeakSet(), _SkyModalAdapterService_addClassToBody = function _SkyModalAdapterService_addClassToBody(className) {
87
+ _SkyModalAdapterService_docRef = new WeakMap(), _SkyModalAdapterService_bodyEl = new WeakMap(), _SkyModalAdapterService_windowRef = new WeakMap(), _SkyModalAdapterService_hostSiblingAriaHiddenCache = new WeakMap(), _SkyModalAdapterService_instances = new WeakSet(), _SkyModalAdapterService_addClassToBody = function _SkyModalAdapterService_addClassToBody(className) {
41
88
  __classPrivateFieldGet(this, _SkyModalAdapterService_bodyEl, "f").classList.add(className);
42
89
  }, _SkyModalAdapterService_removeClassFromBody = function _SkyModalAdapterService_removeClassFromBody(className) {
43
90
  __classPrivateFieldGet(this, _SkyModalAdapterService_bodyEl, "f").classList.remove(className);
@@ -49,4 +96,4 @@ SkyModalAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
49
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalAdapterService, decorators: [{
50
97
  type: Injectable
51
98
  }], ctorParameters: function () { return [{ type: i1.SkyAppWindowRef }]; } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFFOUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBU2pDLFlBQVksU0FBMEI7O1FBTHRDLGlEQUFhO1FBQ2IsaURBQXFCO1FBRXJCLG9EQUE0QjtRQUcxQix1QkFBQSxJQUFJLHFDQUFjLFNBQVMsTUFBQSxDQUFDO1FBQzVCLHVCQUFBLElBQUksa0NBQVcsdUJBQUEsSUFBSSx5Q0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLE1BQUEsQ0FBQztRQUNyRCx1QkFBQSxJQUFJLGtDQUFXLHVCQUFBLElBQUkseUNBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksTUFBQSxDQUFDO0lBQzVELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxTQUFrQjtRQUNoRCxJQUFJLFNBQVMsRUFBRTtZQUNiLHVCQUFBLElBQUksaUZBQWdCLE1BQXBCLElBQUksRUFBaUIsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNwRTthQUFNO1lBQ0wsdUJBQUEsSUFBSSxzRkFBcUIsTUFBekIsSUFBSSxFQUFzQixzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3pFO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFjO1FBQ2pDLElBQUksS0FBSyxFQUFFO1lBQ1QsdUJBQUEsSUFBSSxpRkFBZ0IsTUFBcEIsSUFBSSxFQUFpQixzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQy9EO2FBQU07WUFDTCx1QkFBQSxJQUFJLHNGQUFxQixNQUF6QixJQUFJLEVBQXNCLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDcEU7SUFDSCxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLHVCQUFBLElBQUksc0NBQVEsQ0FBQyxhQUFhLENBQUM7SUFDcEMsQ0FBQzs7K1JBRWUsU0FBaUI7SUFDL0IsdUJBQUEsSUFBSSxzQ0FBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxxR0FFb0IsU0FBaUI7SUFDcEMsdUJBQUEsSUFBSSxzQ0FBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQXhDdUIsNENBQXFCLEdBQUcsMEJBQTJCLENBQUE7QUFDbkQsdUNBQWdCLEdBQUcscUJBQXNCLENBQUE7bUhBRnRELHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTU9EQUxfQk9EWV9GVUxMX0NMQVNTID0gJ3NreS1tb2RhbC1ib2R5LWZ1bGwtcGFnZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1PREFMX0JPRFlfQ0xBU1MgPSAnc2t5LW1vZGFsLWJvZHktb3Blbic7XG5cbiAgI2RvY1JlZjogYW55O1xuICAjYm9keUVsOiBIVE1MRWxlbWVudDtcblxuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG5cbiAgY29uc3RydWN0b3Iod2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYpIHtcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gICAgdGhpcy4jZG9jUmVmID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudDtcbiAgICB0aGlzLiNib2R5RWwgPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRnVsbFBhZ2VNb2RhbENsYXNzKGlzQWRkRnVsbDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0FkZEZ1bGwpIHtcbiAgICAgIHRoaXMuI2FkZENsYXNzVG9Cb2R5KFNreU1vZGFsQWRhcHRlclNlcnZpY2UuTU9EQUxfQk9EWV9GVUxMX0NMQVNTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVtb3ZlQ2xhc3NGcm9tQm9keShTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlLk1PREFMX0JPRFlfRlVMTF9DTEFTUyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFBhZ2VTY3JvbGwoaXNBZGQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNBZGQpIHtcbiAgICAgIHRoaXMuI2FkZENsYXNzVG9Cb2R5KFNreU1vZGFsQWRhcHRlclNlcnZpY2UuTU9EQUxfQk9EWV9DTEFTUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3JlbW92ZUNsYXNzRnJvbUJvZHkoU2t5TW9kYWxBZGFwdGVyU2VydmljZS5NT0RBTF9CT0RZX0NMQVNTKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9kYWxPcGVuZXIoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNkb2NSZWYuYWN0aXZlRWxlbWVudDtcbiAgfVxuXG4gICNhZGRDbGFzc1RvQm9keShjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI2JvZHlFbC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIH1cblxuICAjcmVtb3ZlQ2xhc3NGcm9tQm9keShjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI2JvZHlFbC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gIH1cbn1cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFFOUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDLFlBQVksU0FBMEI7O1FBTnRDLGlEQUFhO1FBQ2IsaURBQXFCO1FBRXJCLG9EQUE0QjtRQUM1Qiw2REFBOEIsSUFBSSxHQUFHLEVBQTBCLEVBQUM7UUFHOUQsdUJBQUEsSUFBSSxxQ0FBYyxTQUFTLE1BQUEsQ0FBQztRQUM1Qix1QkFBQSxJQUFJLGtDQUFXLHVCQUFBLElBQUkseUNBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxNQUFBLENBQUM7UUFDckQsdUJBQUEsSUFBSSxrQ0FBVyx1QkFBQSxJQUFJLHlDQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQUEsQ0FBQztJQUM1RCxDQUFDO0lBRU0sd0JBQXdCLENBQUMsU0FBa0I7UUFDaEQsSUFBSSxTQUFTLEVBQUU7WUFDYix1QkFBQSxJQUFJLGlGQUFnQixNQUFwQixJQUFJLEVBQWlCLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDcEU7YUFBTTtZQUNMLHVCQUFBLElBQUksc0ZBQXFCLE1BQXpCLElBQUksRUFBc0Isc0JBQXNCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYztRQUNqQyxJQUFJLEtBQUssRUFBRTtZQUNULHVCQUFBLElBQUksaUZBQWdCLE1BQXBCLElBQUksRUFBaUIsc0JBQXNCLENB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YW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsQWRhcHRlclNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNT0RBTF9CT0RZX0ZVTExfQ0xBU1MgPSAnc2t5LW1vZGFsLWJvZHktZnVsbC1wYWdlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTU9EQUxfQk9EWV9DTEFTUyA9ICdza3ktbW9kYWwtYm9keS1vcGVuJztcblxuICAjZG9jUmVmOiBhbnk7XG4gICNib2R5RWw6IEhUTUxFbGVtZW50O1xuXG4gICN3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZjtcbiAgI2hvc3RTaWJsaW5nQXJpYUhpZGRlbkNhY2hlID0gbmV3IE1hcDxFbGVtZW50LCBzdHJpbmcgfCBudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmKSB7XG4gICAgdGhpcy4jd2luZG93UmVmID0gd2luZG93UmVmO1xuICAgIHRoaXMuI2RvY1JlZiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQ7XG4gICAgdGhpcy4jYm9keUVsID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5O1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUZ1bGxQYWdlTW9kYWxDbGFzcyhpc0FkZEZ1bGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNBZGRGdWxsKSB7XG4gICAgICB0aGlzLiNhZGRDbGFzc1RvQm9keShTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlLk1PREFMX0JPRFlfRlVMTF9DTEFTUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3JlbW92ZUNsYXNzRnJvbUJvZHkoU2t5TW9kYWxBZGFwdGVyU2VydmljZS5NT0RBTF9CT0RZX0ZVTExfQ0xBU1MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRQYWdlU2Nyb2xsKGlzQWRkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzQWRkKSB7XG4gICAgICB0aGlzLiNhZGRDbGFzc1RvQm9keShTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlLk1PREFMX0JPRFlfQ0xBU1MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW1vdmVDbGFzc0Zyb21Cb2R5KFNreU1vZGFsQWRhcHRlclNlcnZpY2UuTU9EQUxfQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE1vZGFsT3BlbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jZG9jUmVmLmFjdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAjYWRkQ2xhc3NUb0JvZHkoY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNib2R5RWwuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9XG5cbiAgI3JlbW92ZUNsYXNzRnJvbUJvZHkoY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNib2R5RWwuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHNpYmxpbmdzIG9mIG1vZGFsLWhvc3QgZnJvbSBzY3JlZW4gcmVhZGVyc1xuICAgKiBAcGFyYW0gaG9zdEVsUmVmIHJlZmVyZW5jZSB0byBtb2RhbC1ob3N0IGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBoaWRlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnMoaG9zdEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSBob3N0RWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBob3N0U2libGluZ3MgPSBob3N0RWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob3N0U2libGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBob3N0U2libGluZ3NbaV07XG4gICAgICBpZiAoXG4gICAgICAgIGVsZW1lbnQgIT09IGhvc3RFbGVtZW50ICYmXG4gICAgICAgICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnYXJpYS1saXZlJykgJiZcbiAgICAgICAgZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnc2NyaXB0JyAmJlxuICAgICAgICBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdHlsZSdcbiAgICAgICkge1xuICAgICAgICAvLyBwcmVzZXJ2ZSBwcmV2aW91cyBhcmlhLWhpZGRlbiBzdGF0dXMgb2YgZWxlbWVudHMgb3V0c2lkZSBvZiBtb2RhbCBob3N0XG4gICAgICAgIHRoaXMuI2hvc3RTaWJsaW5nQXJpYUhpZGRlbkNhY2hlLnNldChcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG4gICAgICAgICk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIG1vZGFsLWhvc3Qgc2libGluZ3MgdG8gc2NyZWVucmVhZGVyIHN0YXR1cyBwcmlvciB0byBtb2RhbHMgYmVpbmcgb3BlbmVkXG4gICAqL1xuICBwdWJsaWMgdW5oaWRlT3JSZXN0b3JlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jaG9zdFNpYmxpbmdBcmlhSGlkZGVuQ2FjaGUuZm9yRWFjaCgocHJldmlvdXNWYWx1ZSwgZWxlbWVudCkgPT4ge1xuICAgICAgLy8gaWYgZWxlbWVudCBoYWQgYXJpYS1oaWRkZW4gc3RhdHVzIHByaW9yLCByZXN0b3JlIHN0YXR1c1xuICAgICAgaWYgKGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICBpZiAocHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHByZXZpb3VzVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy4jaG9zdFNpYmxpbmdBcmlhSGlkZGVuQ2FjaGUuY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUHJldmlvdXNNb2RhbEZyb21TY3JlZW5SZWFkZXJzKHRvcE1vZGFsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgaWYgKHRvcE1vZGFsICYmIHRvcE1vZGFsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgICAgdG9wTW9kYWwubmF0aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLnNldEF0dHJpYnV0ZShcbiAgICAgICAgJ2FyaWEtaGlkZGVuJyxcbiAgICAgICAgJ3RydWUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1bmhpZGVQcmV2aW91c01vZGFsRnJvbVNjcmVlblJlYWRlcnModG9wTW9kYWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBpZiAodG9wTW9kYWwgJiYgdG9wTW9kYWwubmF0aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0b3BNb2RhbC5uYXRpdmVFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcucmVtb3ZlQXR0cmlidXRlKFxuICAgICAgICAnYXJpYS1oaWRkZW4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- var _SkyModalHostComponent_instances, _SkyModalHostComponent_resolver, _SkyModalHostComponent_adapter, _SkyModalHostComponent_injector, _SkyModalHostComponent_router, _SkyModalHostComponent_changeDetector, _SkyModalHostComponent_modalHostContext, _SkyModalHostComponent_modalInstances, _SkyModalHostComponent_registerModalInstance, _SkyModalHostComponent_unregisterModalInstance, _SkyModalHostComponent_closeAllModalInstances;
1
+ var _SkyModalHostComponent_instances, _SkyModalHostComponent_resolver, _SkyModalHostComponent_adapter, _SkyModalHostComponent_injector, _SkyModalHostComponent_router, _SkyModalHostComponent_changeDetector, _SkyModalHostComponent_modalHostContext, _SkyModalHostComponent_elRef, _SkyModalHostComponent_modalInstances, _SkyModalHostComponent_registerModalInstance, _SkyModalHostComponent_unregisterModalInstance, _SkyModalHostComponent_closeAllModalInstances;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectorRef, Component, ComponentFactoryResolver, Injector, ViewChild, ViewContainerRef, } from '@angular/core';
3
+ import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, Injector, ViewChild, ViewContainerRef, } from '@angular/core';
4
4
  import { NavigationStart, Router } from '@angular/router';
5
5
  import { SkyMediaQueryService, SkyResizeObserverMediaQueryService, } from '@skyux/core';
6
6
  import { takeWhile } from 'rxjs/operators';
@@ -17,7 +17,7 @@ import * as i4 from "@angular/common";
17
17
  * @internal
18
18
  */
19
19
  export class SkyModalHostComponent {
20
- constructor(resolver, adapter, injector, router, changeDetector, modalHostContext) {
20
+ constructor(resolver, adapter, injector, router, changeDetector, modalHostContext, elRef) {
21
21
  _SkyModalHostComponent_instances.add(this);
22
22
  _SkyModalHostComponent_resolver.set(this, void 0);
23
23
  _SkyModalHostComponent_adapter.set(this, void 0);
@@ -25,6 +25,7 @@ export class SkyModalHostComponent {
25
25
  _SkyModalHostComponent_router.set(this, void 0);
26
26
  _SkyModalHostComponent_changeDetector.set(this, void 0);
27
27
  _SkyModalHostComponent_modalHostContext.set(this, void 0);
28
+ _SkyModalHostComponent_elRef.set(this, void 0);
28
29
  _SkyModalHostComponent_modalInstances.set(this, []);
29
30
  __classPrivateFieldSet(this, _SkyModalHostComponent_resolver, resolver, "f");
30
31
  __classPrivateFieldSet(this, _SkyModalHostComponent_adapter, adapter, "f");
@@ -32,6 +33,7 @@ export class SkyModalHostComponent {
32
33
  __classPrivateFieldSet(this, _SkyModalHostComponent_router, router, "f");
33
34
  __classPrivateFieldSet(this, _SkyModalHostComponent_changeDetector, changeDetector, "f");
34
35
  __classPrivateFieldSet(this, _SkyModalHostComponent_modalHostContext, modalHostContext, "f");
36
+ __classPrivateFieldSet(this, _SkyModalHostComponent_elRef, elRef, "f");
35
37
  }
36
38
  get modalOpen() {
37
39
  return SkyModalHostService.openModalCount > 0;
@@ -80,9 +82,26 @@ export class SkyModalHostComponent {
80
82
  parent: __classPrivateFieldGet(this, _SkyModalHostComponent_injector, "f"),
81
83
  });
82
84
  const modalComponentRef = this.target.createComponent(factory, undefined, injector);
85
+ // modal element that was just opened
86
+ const modalElement = modalComponentRef.location;
83
87
  modalInstance.componentInstance = modalComponentRef.instance;
84
88
  __classPrivateFieldGet(this, _SkyModalHostComponent_instances, "m", _SkyModalHostComponent_registerModalInstance).call(this, modalInstance);
85
- function closeModal() {
89
+ // hidding all elements at the modal-host level from screenreaders when the a modal is opened
90
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").hideHostSiblingsFromScreenReaders(__classPrivateFieldGet(this, _SkyModalHostComponent_elRef, "f"));
91
+ if (SkyModalHostService.openModalCount > 1 &&
92
+ SkyModalHostService.topModal === hostService) {
93
+ // hiding the lower modals when more than one modal is opened
94
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").hidePreviousModalFromScreenReaders(modalElement);
95
+ }
96
+ const closeModal = () => {
97
+ // unhide siblings if last modal is closing
98
+ if (SkyModalHostService.openModalCount === 1) {
99
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").unhideOrRestoreHostSiblingsFromScreenReaders();
100
+ }
101
+ else if (SkyModalHostService.topModal === hostService) {
102
+ // if there are more than 1 modal then unhide the one behind this one before closing it
103
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").unhidePreviousModalFromScreenReaders(modalElement);
104
+ }
86
105
  hostService.destroy();
87
106
  adapter.setPageScroll(SkyModalHostService.openModalCount > 0);
88
107
  adapter.toggleFullPageModalClass(SkyModalHostService.fullPageModalCount > 0);
@@ -92,7 +111,7 @@ export class SkyModalHostComponent {
92
111
  modalOpener.focus();
93
112
  }
94
113
  modalComponentRef.destroy();
95
- }
114
+ };
96
115
  hostService.openHelp.subscribe((helpKey) => {
97
116
  modalInstance.openHelp(helpKey);
98
117
  });
@@ -114,7 +133,7 @@ export class SkyModalHostComponent {
114
133
  __classPrivateFieldGet(this, _SkyModalHostComponent_changeDetector, "f").detectChanges();
115
134
  }
116
135
  }
117
- _SkyModalHostComponent_resolver = new WeakMap(), _SkyModalHostComponent_adapter = new WeakMap(), _SkyModalHostComponent_injector = new WeakMap(), _SkyModalHostComponent_router = new WeakMap(), _SkyModalHostComponent_changeDetector = new WeakMap(), _SkyModalHostComponent_modalHostContext = new WeakMap(), _SkyModalHostComponent_modalInstances = new WeakMap(), _SkyModalHostComponent_instances = new WeakSet(), _SkyModalHostComponent_registerModalInstance = function _SkyModalHostComponent_registerModalInstance(instance) {
136
+ _SkyModalHostComponent_resolver = new WeakMap(), _SkyModalHostComponent_adapter = new WeakMap(), _SkyModalHostComponent_injector = new WeakMap(), _SkyModalHostComponent_router = new WeakMap(), _SkyModalHostComponent_changeDetector = new WeakMap(), _SkyModalHostComponent_modalHostContext = new WeakMap(), _SkyModalHostComponent_elRef = new WeakMap(), _SkyModalHostComponent_modalInstances = new WeakMap(), _SkyModalHostComponent_instances = new WeakSet(), _SkyModalHostComponent_registerModalInstance = function _SkyModalHostComponent_registerModalInstance(instance) {
118
137
  __classPrivateFieldGet(this, _SkyModalHostComponent_modalInstances, "f").push(instance);
119
138
  }, _SkyModalHostComponent_unregisterModalInstance = function _SkyModalHostComponent_unregisterModalInstance(instance) {
120
139
  __classPrivateFieldGet(this, _SkyModalHostComponent_modalInstances, "f").slice(__classPrivateFieldGet(this, _SkyModalHostComponent_modalInstances, "f").indexOf(instance), 1);
@@ -123,16 +142,16 @@ _SkyModalHostComponent_resolver = new WeakMap(), _SkyModalHostComponent_adapter
123
142
  instance.close();
124
143
  }
125
144
  };
126
- SkyModalHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.SkyModalAdapterService }, { token: i0.Injector }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i3.SkyModalHostContext }], target: i0.ɵɵFactoryTarget.Component });
145
+ SkyModalHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.SkyModalAdapterService }, { token: i0.Injector }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i3.SkyModalHostContext }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
127
146
  SkyModalHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", 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;top:0;left:0;bottom:0;right:0}\n"], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], viewProviders: [SkyModalAdapterService] });
128
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalHostComponent, decorators: [{
129
148
  type: Component,
130
149
  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;top:0;left:0;bottom:0;right:0}\n"] }]
131
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.SkyModalAdapterService }, { type: i0.Injector }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i3.SkyModalHostContext }]; }, propDecorators: { target: [{
150
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.SkyModalAdapterService }, { type: i0.Injector }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i3.SkyModalHostContext }, { type: i0.ElementRef }]; }, propDecorators: { target: [{
132
151
  type: ViewChild,
133
152
  args: ['target', {
134
153
  read: ViewContainerRef,
135
154
  static: true,
136
155
  }]
137
156
  }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaG9zdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1ob3N0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWhvc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsUUFBUSxFQUVSLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGtDQUFrQyxHQUNuQyxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUkzRDs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUErQmhDLFlBQ0UsUUFBa0MsRUFDbEMsT0FBK0IsRUFDL0IsUUFBa0IsRUFDbEIsTUFBYyxFQUNkLGNBQWlDLEVBQ2pDLGdCQUFxQzs7UUFoQnZDLGtEQUFvQztRQUNwQyxpREFBaUM7UUFDakMsa0RBQW9CO1FBQ3BCLGdEQUFnQjtRQUNoQix3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MEIsYUFBYSxDQUFDLENBQUM7WUFDN0MsVUFBVSxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILHFGQUFxRjtRQUNyRix1QkFBQSxJQUFJLDZDQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OytmQUVzQixRQUEwQjtJQUMvQyx1QkFBQSxJQUFJLDZDQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QyxDQUFDLDJHQUV3QixRQUEwQjtJQUNqRCx1QkFBQSxJQUFJLDZDQUFnQixDQUFDLEtBQUssQ0FBQyx1QkFBQSxJQUFJLDZDQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0lBR0MsS0FBSyxNQUFNLFFBQVEsSUFBSSx1QkFBQSxJQUFJLDZDQUFnQixFQUFFO1FBQzNDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUNsQjtBQUNILENBQUM7a0hBbktVLHFCQUFxQjtzR0FBckIscUJBQXFCLG1JQWdCeEIsZ0JBQWdCLDJDQ2pEMUIsMEpBUUEsa05EdUJpQixDQUFDLHNCQUFzQixDQUFDOzJGQUU1QixxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUdYLENBQUMsc0JBQXNCLENBQUM7a1FBcUJoQyxNQUFNO3NCQUpaLFNBQVM7dUJBQUMsUUFBUSxFQUFFO3dCQUNuQixJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixNQUFNLEVBQUUsSUFBSTtxQkFDTiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxuICBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5TW9kYWxBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU1vZGFsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kYWwtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBTa3lNb2RhbEhvc3RDb250ZXh0IH0gZnJvbSAnLi9tb2RhbC1ob3N0LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5TW9kYWxIb3N0U2VydmljZSB9IGZyb20gJy4vbW9kYWwtaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UgfSBmcm9tICcuL21vZGFsLWluc3RhbmNlJztcbmltcG9ydCB7IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSB9IGZyb20gJy4vbW9kYWwuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LW1vZGFsLWhvc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtaG9zdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWhvc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW1NreU1vZGFsQWRhcHRlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEhvc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZ2V0IG1vZGFsT3BlbigpIHtcbiAgICByZXR1cm4gU2t5TW9kYWxIb3N0U2VydmljZS5vcGVuTW9kYWxDb3VudCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJhY2tkcm9wWkluZGV4KCkge1xuICAgIHJldHVybiBTa3lNb2RhbEhvc3RTZXJ2aWNlLmJhY2tkcm9wWkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBgYW55YCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2l0aCBBbmd1bGFyIDQtNy5cbiAgICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMDY1NFxuICAgKiBUT0RPOiBSZW1vdmUgdGhlIGBhbnlgIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcsIHtcbiAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSBhcyBhbnkpXG4gIHB1YmxpYyB0YXJnZXQ6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI3Jlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG4gICNhZGFwdGVyOiBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlO1xuICAjaW5qZWN0b3I6IEluamVjdG9yO1xuICAjcm91dGVyOiBSb3V0ZXI7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI21vZGFsSG9zdENvbnRleHQ6IFNreU1vZGFsSG9zdENvbnRleHQ7XG5cbiAgI21vZGFsSW5zdGFuY2VzOiBTa3lNb2RhbEluc3RhbmNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIGFkYXB0ZXI6IFNreU1vZGFsQWRhcHRlclNlcnZpY2UsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBtb2RhbEhvc3RDb250ZXh0OiBTa3lNb2RhbEhvc3RDb250ZXh0XG4gICkge1xuICAgIHRoaXMuI3Jlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgdGhpcy4jYWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdGhpcy4jaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICB0aGlzLiNyb3V0ZXIgPSByb3V0ZXI7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNtb2RhbEhvc3RDb250ZXh0ID0gbW9kYWxIb3N0Q29udGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbG9zZSBhbGwgbW9kYWwgaW5zdGFuY2VzIGJlZm9yZSBkaXNwb3Npbmcgb2YgdGhlIGhvc3QgY29udGFpbmVyLlxuICAgIHRoaXMuI2Nsb3NlQWxsTW9kYWxJbnN0YW5jZXMoKTtcbiAgICB0aGlzLiNtb2RhbEhvc3RDb250ZXh0LmFyZ3MudGVhcmRvd25DYWxsYmFjaygpO1xuICB9XG5cbiAgcHVibGljIG9wZW4oXG4gICAgbW9kYWxJbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZSxcbiAgICBjb21wb25lbnQ6IGFueSxcbiAgICBjb25maWc/OiBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2VcbiAgKTogdm9pZCB7XG4gICAgLyogSWdub3JlIGNvdmVyYWdlIGFzIHdlIHNwZWNpZnkgdGhlIHRhcmdldCBlbGVtZW50IGFuZCBzbyB0aGUgdmlldyBjaGlsZCBzaG91bGQgbmV2ZXIgYmUgdW5kZWZpbmVkIHVubGVzc1xuICAgICAqIHdlIHdlcmUgdG8gY2FsbCB0aGUgYG9wZW5gIG1ldGhvZCBpbiBhbiBlYXJseSBsaWZlY3ljbGUgaG9vay4gKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXM6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSA9IE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuI3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG5cbiAgICBjb25zdCBob3N0U2VydmljZSA9IG5ldyBTa3lNb2RhbEhvc3RTZXJ2aWNlKCk7XG4gICAgaG9zdFNlcnZpY2UuZnVsbFBhZ2UgPSAhIXBhcmFtcy5mdWxsUGFnZTtcblxuICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLiNhZGFwdGVyO1xuICAgIGNvbnN0IG1vZGFsT3BlbmVyOiBIVE1MRWxlbWVudCA9IGFkYXB0ZXIuZ2V0TW9kYWxPcGVuZXIoKTtcblxuICAgIGxldCBpc09wZW4gPSB0cnVlO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuICAgIHBhcmFtcy5wcm92aWRlcnMhLnB1c2goe1xuICAgICAgcHJvdmlkZTogU2t5TW9kYWxIb3N0U2VydmljZSxcbiAgICAgIHVzZVZhbHVlOiBob3N0U2VydmljZSxcbiAgICB9KTtcbiAgICBwYXJhbXMucHJvdmlkZXJzIS5wdXNoKHtcbiAgICAgIHByb3ZpZGU6IFNreU1vZGFsQ29uZmlndXJhdGlvbixcbiAgICAgIHVzZVZhbHVlOiBwYXJhbXMsXG4gICAgfSk7XG4gICAgcGFyYW1zLnByb3ZpZGVycyEucHVzaCh7XG4gICAgICBwcm92aWRlOiBTa3lNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgIH0pO1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuXG4gICAgYWRhcHRlci5zZXRQYWdlU2Nyb2xsKFNreU1vZGFsSG9zdFNlcnZpY2Uub3Blbk1vZGFsQ291bnQgPiAwKTtcbiAgICBhZGFwdGVyLnRvZ2dsZUZ1bGxQYWdlTW9kYWxDbGFzcyhcbiAgICAgIFNreU1vZGFsSG9zdFNlcnZpY2UuZnVsbFBhZ2VNb2RhbENvdW50ID4gMFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlcnMgPSBwYXJhbXMucHJvdmlkZXJzIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdO1xuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIHBhcmVudDogdGhpcy4jaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtb2RhbENvbXBvbmVudFJlZiA9IHRoaXMudGFyZ2V0LmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIGZhY3RvcnksXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBpbmplY3RvclxuICAgICk7XG5cbiAgICBtb2RhbEluc3RhbmNlLmNvbXBvbmVudEluc3RhbmNlID0gbW9kYWxDb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICB0aGlzLiNyZWdpc3Rlck1vZGFsSW5zdGFuY2UobW9kYWxJbnN0YW5jZSk7XG5cbiAgICBmdW5jdGlvbiBjbG9zZU1vZGFsKCkge1xuICAgICAgaG9zdFNlcnZpY2UuZGVzdHJveSgpO1xuICAgICAgYWRhcHRlci5zZXRQYWdlU2Nyb2xsKFNreU1vZGFsSG9zdFNlcnZpY2Uub3Blbk1vZGFsQ291bnQgPiAwKTtcbiAgICAgIGFkYXB0ZXIudG9nZ2xlRnVsbFBhZ2VNb2RhbENsYXNzKFxuICAgICAgICBTa3lNb2RhbEhvc3RTZXJ2aWNlLmZ1bGxQYWdlTW9kYWxDb3VudCA+IDBcbiAgICAgICk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICBpZiAobW9kYWxPcGVuZXIgJiYgbW9kYWxPcGVuZXIuZm9jdXMpIHtcbiAgICAgICAgbW9kYWxPcGVuZXIuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIG1vZGFsQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBob3N0U2VydmljZS5vcGVuSGVscC5zdWJzY3JpYmUoKGhlbHBLZXkpID0+IHtcbiAgICAgIG1vZGFsSW5zdGFuY2Uub3BlbkhlbHAoaGVscEtleSk7XG4gICAgfSk7XG5cbiAgICBob3N0U2VydmljZS5jbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgbW9kYWxJbnN0YW5jZS5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jcm91dGVyLmV2ZW50cy5waXBlKHRha2VXaGlsZSgoKSA9PiBpc09wZW4pKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIG1vZGFsSW5zdGFuY2UuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG1vZGFsSW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpc09wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuI3VucmVnaXN0ZXJNb2RhbEluc3RhbmNlKG1vZGFsSW5zdGFuY2UpO1xuICAgICAgY2xvc2VNb2RhbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gTmVjZXNzYXJ5IGlmIHRoZSBob3N0IHdhcyBjcmVhdGVkIHZpYSBhIGNvbnN1bWVyJ3MgbGlmZWN5Y2xlIGhvb2sgc3VjaCBhcyBuZ09uSW5pdFxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gICNyZWdpc3Rlck1vZGFsSW5zdGFuY2UoaW5zdGFuY2U6IFNreU1vZGFsSW5zdGFuY2UpOiB2b2lkIHtcbiAgICB0aGlzLiNtb2RhbEluc3RhbmNlcy5wdXNoKGluc3RhbmNlKTtcbiAgfVxuXG4gICN1bnJlZ2lzdGVyTW9kYWxJbnN0YW5jZShpbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZSk6IHZvaWQge1xuICAgIHRoaXMuI21vZGFsSW5zdGFuY2VzLnNsaWNlKHRoaXMuI21vZGFsSW5zdGFuY2VzLmluZGV4T2YoaW5zdGFuY2UpLCAxKTtcbiAgfVxuXG4gICNjbG9zZUFsbE1vZGFsSW5zdGFuY2VzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgdGhpcy4jbW9kYWxJbnN0YW5jZXMpIHtcbiAgICAgIGluc3RhbmNlLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LW1vZGFsLWhvc3QtYmFja2Ryb3BcIlxuICBbaGlkZGVuXT1cIiFtb2RhbE9wZW5cIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgekluZGV4OiBiYWNrZHJvcFpJbmRleFxuICB9XCJcbj48L2Rpdj5cbjxkaXYgI3RhcmdldD48L2Rpdj5cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaG9zdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1ob3N0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLWhvc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFFBQVEsRUFFUixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQ0FBa0MsR0FDbkMsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFJM0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBK0JoQyxZQUNFLFFBQWtDLEVBQ2xDLE9BQStCLEVBQy9CLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxjQUFpQyxFQUNqQyxnQkFBcUMsRUFDckMsS0FBaUI7O1FBakJuQixrREFBb0M7UUFDcEMsaURBQWlDO1FBQ2pDLGtEQUFv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Q0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7SUFHQyxLQUFLLE1BQU0sUUFBUSxJQUFJLHVCQUFBLElBQUksNkNBQWdCLEVBQUU7UUFDM0MsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztrSEExTFUscUJBQXFCO3NHQUFyQixxQkFBcUIsbUlBZ0J4QixnQkFBZ0IsMkNDbEQxQiwwSkFRQSxrTkR3QmlCLENBQUMsc0JBQXNCLENBQUM7MkZBRTVCLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsQ0FBQyxzQkFBc0IsQ0FBQzsyUkFxQmhDLE1BQU07c0JBSlosU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLE1BQU0sRUFBRSxJQUFJO3FCQUNOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tb2RhbC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IFNreU1vZGFsSG9zdENvbnRleHQgfSBmcm9tICcuL21vZGFsLWhvc3QtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lNb2RhbEhvc3RTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSB9IGZyb20gJy4vbW9kYWwtaW5zdGFuY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxDb25maWd1cmF0aW9uSW50ZXJmYWNlIH0gZnJvbSAnLi9tb2RhbC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbW9kYWwtaG9zdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1ob3N0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtaG9zdC5jb21wb25lbnQuc2NzcyddLFxuICB2aWV3UHJvdmlkZXJzOiBbU2t5TW9kYWxBZGFwdGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsSG9zdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBnZXQgbW9kYWxPcGVuKCkge1xuICAgIHJldHVybiBTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYmFja2Ryb3BaSW5kZXgoKSB7XG4gICAgcmV0dXJuIFNreU1vZGFsSG9zdFNlcnZpY2UuYmFja2Ryb3BaSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlIGBhbnlgIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB3aXRoIEFuZ3VsYXIgNC03LlxuICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzMwNjU0XG4gICAqIFRPRE86IFJlbW92ZSB0aGUgYGFueWAgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQFZpZXdDaGlsZCgndGFyZ2V0Jywge1xuICAgIHJlYWQ6IFZpZXdDb250YWluZXJSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9IGFzIGFueSlcbiAgcHVibGljIHRhcmdldDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcblxuICAjcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjtcbiAgI2FkYXB0ZXI6IFNreU1vZGFsQWRhcHRlclNlcnZpY2U7XG4gICNpbmplY3RvcjogSW5qZWN0b3I7XG4gICNyb3V0ZXI6IFJvdXRlcjtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI21vZGFsSG9zdENvbnRleHQ6IFNreU1vZGFsSG9zdENvbnRleHQ7XG4gICNlbFJlZjogRWxlbWVudFJlZjtcblxuICAjbW9kYWxJbnN0YW5jZXM6IFNreU1vZGFsSW5zdGFuY2VbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgYWRhcHRlcjogU2t5TW9kYWxBZGFwdGVyU2VydmljZSxcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIG1vZGFsSG9zdENvbnRleHQ6IFNreU1vZGFsSG9zdENvbnRleHQsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy4jcmVzb2x2ZXIgPSByZXNvbHZlcjtcbiAgICB0aGlzLiNhZGFwdGVyID0gYWRhcHRlcjtcbiAgICB0aGlzLiNpbmplY3RvciA9IGluamVjdG9yO1xuICAgIHRoaXMuI3JvdXRlciA9IHJvdXRlcjtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI21vZGFsSG9zdENvbnRleHQgPSBtb2RhbEhvc3RDb250ZXh0O1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gQ2xvc2UgYWxsIG1vZGFsIGluc3RhbmNlcyBiZWZvcmUgZGlzcG9zaW5nIG9mIHRoZSBob3N0IGNvbnRhaW5lci5cbiAgICB0aGlzLiNjbG9zZUFsbE1vZGFsSW5zdGFuY2VzKCk7XG4gICAgdGhpcy4jbW9kYWxIb3N0Q29udGV4dC5hcmdzLnRlYXJkb3duQ2FsbGJhY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKFxuICAgIG1vZGFsSW5zdGFuY2U6IFNreU1vZGFsSW5zdGFuY2UsXG4gICAgY29tcG9uZW50OiBhbnksXG4gICAgY29uZmlnPzogU2t5TW9kYWxDb25maWd1cmF0aW9uSW50ZXJmYWNlXG4gICk6IHZvaWQge1xuICAgIC8qIElnbm9yZSBjb3ZlcmFnZSBhcyB3ZSBzcGVjaWZ5IHRoZSB0YXJnZXQgZWxlbWVudCBhbmQgc28gdGhlIHZpZXcgY2hpbGQgc2hvdWxkIG5ldmVyIGJlIHVuZGVmaW5lZCB1bmxlc3NcbiAgICAgKiB3ZSB3ZXJlIHRvIGNhbGwgdGhlIGBvcGVuYCBtZXRob2QgaW4gYW4gZWFybHkgbGlmZWN5Y2xlIGhvb2suICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIXRoaXMudGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zOiBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2UgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLiNyZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuXG4gICAgY29uc3QgaG9zdFNlcnZpY2UgPSBuZXcgU2t5TW9kYWxIb3N0U2VydmljZSgpO1xuICAgIGhvc3RTZXJ2aWNlLmZ1bGxQYWdlID0gISFwYXJhbXMuZnVsbFBhZ2U7XG5cbiAgICBjb25zdCBhZGFwdGVyID0gdGhpcy4jYWRhcHRlcjtcbiAgICBjb25zdCBtb2RhbE9wZW5lcjogSFRNTEVsZW1lbnQgPSBhZGFwdGVyLmdldE1vZGFsT3BlbmVyKCk7XG5cbiAgICBsZXQgaXNPcGVuID0gdHJ1ZTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbiAgICBwYXJhbXMucHJvdmlkZXJzIS5wdXNoKHtcbiAgICAgIHByb3ZpZGU6IFNreU1vZGFsSG9zdFNlcnZpY2UsXG4gICAgICB1c2VWYWx1ZTogaG9zdFNlcnZpY2UsXG4gICAgfSk7XG4gICAgcGFyYW1zLnByb3ZpZGVycyEucHVzaCh7XG4gICAgICBwcm92aWRlOiBTa3lNb2RhbENvbmZpZ3VyYXRpb24sXG4gICAgICB1c2VWYWx1ZTogcGFyYW1zLFxuICAgIH0pO1xuICAgIHBhcmFtcy5wcm92aWRlcnMhLnB1c2goe1xuICAgICAgcHJvdmlkZTogU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gICAgICB1c2VFeGlzdGluZzogU2t5UmVzaXplT2JzZXJ2ZXJNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICB9KTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cblxuICAgIGFkYXB0ZXIuc2V0UGFnZVNjcm9sbChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCk7XG4gICAgYWRhcHRlci50b2dnbGVGdWxsUGFnZU1vZGFsQ2xhc3MoXG4gICAgICBTa3lNb2RhbEhvc3RTZXJ2aWNlLmZ1bGxQYWdlTW9kYWxDb3VudCA+IDBcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXJzID0gcGFyYW1zLnByb3ZpZGVycyB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuI2luamVjdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbW9kYWxDb21wb25lbnRSZWYgPSB0aGlzLnRhcmdldC5jcmVhdGVDb21wb25lbnQoXG4gICAgICBmYWN0b3J5LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuXG4gICAgLy8gbW9kYWwgZWxlbWVudCB0aGF0IHdhcyBqdXN0IG9wZW5lZFxuICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IG1vZGFsQ29tcG9uZW50UmVmLmxvY2F0aW9uO1xuXG4gICAgbW9kYWxJbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZSA9IG1vZGFsQ29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgdGhpcy4jcmVnaXN0ZXJNb2RhbEluc3RhbmNlKG1vZGFsSW5zdGFuY2UpO1xuXG4gICAgLy8gaGlkZGluZyBhbGwgZWxlbWVudHMgYXQgdGhlIG1vZGFsLWhvc3QgbGV2ZWwgZnJvbSBzY3JlZW5yZWFkZXJzIHdoZW4gdGhlIGEgbW9kYWwgaXMgb3BlbmVkXG4gICAgdGhpcy4jYWRhcHRlci5oaWRlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnModGhpcy4jZWxSZWYpO1xuICAgIGlmIChcbiAgICAgIFNreU1vZGFsSG9zdFNlcnZpY2Uub3Blbk1vZGFsQ291bnQgPiAxICYmXG4gICAgICBTa3lNb2RhbEhvc3RTZXJ2aWNlLnRvcE1vZGFsID09PSBob3N0U2VydmljZVxuICAgICkge1xuICAgICAgLy8gaGlkaW5nIHRoZSBsb3dlciBtb2RhbHMgd2hlbiBtb3JlIHRoYW4gb25lIG1vZGFsIGlzIG9wZW5lZFxuICAgICAgdGhpcy4jYWRhcHRlci5oaWRlUHJldmlvdXNNb2RhbEZyb21TY3JlZW5SZWFkZXJzKG1vZGFsRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIC8vIHVuaGlkZSBzaWJsaW5ncyBpZiBsYXN0IG1vZGFsIGlzIGNsb3NpbmdcbiAgICAgIGlmIChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID09PSAxKSB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXIudW5oaWRlT3JSZXN0b3JlSG9zdFNpYmxpbmdzRnJvbVNjcmVlblJlYWRlcnMoKTtcbiAgICAgIH0gZWxzZSBpZiAoU2t5TW9kYWxIb3N0U2VydmljZS50b3BNb2RhbCA9PT0gaG9zdFNlcnZpY2UpIHtcbiAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiAxIG1vZGFsIHRoZW4gdW5oaWRlIHRoZSBvbmUgYmVoaW5kIHRoaXMgb25lIGJlZm9yZSBjbG9zaW5nIGl0XG4gICAgICAgIHRoaXMuI2FkYXB0ZXIudW5oaWRlUHJldmlvdXNNb2RhbEZyb21TY3JlZW5SZWFkZXJzKG1vZGFsRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGhvc3RTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgIGFkYXB0ZXIuc2V0UGFnZVNjcm9sbChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCk7XG4gICAgICBhZGFwdGVyLnRvZ2dsZUZ1bGxQYWdlTW9kYWxDbGFzcyhcbiAgICAgICAgU2t5TW9kYWxIb3N0U2VydmljZS5mdWxsUGFnZU1vZGFsQ291bnQgPiAwXG4gICAgICApO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgaWYgKG1vZGFsT3BlbmVyICYmIG1vZGFsT3BlbmVyLmZvY3VzKSB7XG4gICAgICAgIG1vZGFsT3BlbmVyLmZvY3VzKCk7XG4gICAgICB9XG4gICAgICBtb2RhbENvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfTtcblxuICAgIGhvc3RTZXJ2aWNlLm9wZW5IZWxwLnN1YnNjcmliZSgoaGVscEtleSkgPT4ge1xuICAgICAgbW9kYWxJbnN0YW5jZS5vcGVuSGVscChoZWxwS2V5KTtcbiAgICB9KTtcblxuICAgIGhvc3RTZXJ2aWNlLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBtb2RhbEluc3RhbmNlLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNyb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVdoaWxlKCgpID0+IGlzT3BlbikpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgbW9kYWxJbnN0YW5jZS5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbW9kYWxJbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlzT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy4jdW5yZWdpc3Rlck1vZGFsSW5zdGFuY2UobW9kYWxJbnN0YW5jZSk7XG4gICAgICBjbG9zZU1vZGFsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBOZWNlc3NhcnkgaWYgdGhlIGhvc3Qgd2FzIGNyZWF0ZWQgdmlhIGEgY29uc3VtZXIncyBsaWZlY3ljbGUgaG9vayBzdWNoIGFzIG5nT25Jbml0XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgI3JlZ2lzdGVyTW9kYWxJbnN0YW5jZShpbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZSk6IHZvaWQge1xuICAgIHRoaXMuI21vZGFsSW5zdGFuY2VzLnB1c2goaW5zdGFuY2UpO1xuICB9XG5cbiAgI3VucmVnaXN0ZXJNb2RhbEluc3RhbmNlKGluc3RhbmNlOiBTa3lNb2RhbEluc3RhbmNlKTogdm9pZCB7XG4gICAgdGhpcy4jbW9kYWxJbnN0YW5jZXMuc2xpY2UodGhpcy4jbW9kYWxJbnN0YW5jZXMuaW5kZXhPZihpbnN0YW5jZSksIDEpO1xuICB9XG5cbiAgI2Nsb3NlQWxsTW9kYWxJbnN0YW5jZXMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiB0aGlzLiNtb2RhbEluc3RhbmNlcykge1xuICAgICAgaW5zdGFuY2UuY2xvc2UoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktbW9kYWwtaG9zdC1iYWNrZHJvcFwiXG4gIFtoaWRkZW5dPVwiIW1vZGFsT3BlblwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICB6SW5kZXg6IGJhY2tkcm9wWkluZGV4XG4gIH1cIlxuPjwvZGl2PlxuPGRpdiAjdGFyZ2V0PjwvZGl2PlxuIl19
@@ -138,7 +138,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
138
138
  args: [{ selector: 'sky-modal-header', template: "<h1\n class=\"sky-emphasized\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n>\n <ng-content></ng-content>\n</h1>\n", styles: ["h1{margin:0;line-height:1.2}:host-context(.sky-theme-modern.sky-theme-mode-dark) h1{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark h1{color:#fbfcfe}\n"] }]
139
139
  }] });
140
140
 
141
- var _SkyModalAdapterService_instances, _SkyModalAdapterService_docRef, _SkyModalAdapterService_bodyEl, _SkyModalAdapterService_windowRef, _SkyModalAdapterService_addClassToBody, _SkyModalAdapterService_removeClassFromBody;
141
+ var _SkyModalAdapterService_instances, _SkyModalAdapterService_docRef, _SkyModalAdapterService_bodyEl, _SkyModalAdapterService_windowRef, _SkyModalAdapterService_hostSiblingAriaHiddenCache, _SkyModalAdapterService_addClassToBody, _SkyModalAdapterService_removeClassFromBody;
142
142
  /**
143
143
  * @internal
144
144
  */
@@ -148,6 +148,7 @@ class SkyModalAdapterService {
148
148
  _SkyModalAdapterService_docRef.set(this, void 0);
149
149
  _SkyModalAdapterService_bodyEl.set(this, void 0);
150
150
  _SkyModalAdapterService_windowRef.set(this, void 0);
151
+ _SkyModalAdapterService_hostSiblingAriaHiddenCache.set(this, new Map());
151
152
  __classPrivateFieldSet(this, _SkyModalAdapterService_windowRef, windowRef, "f");
152
153
  __classPrivateFieldSet(this, _SkyModalAdapterService_docRef, __classPrivateFieldGet(this, _SkyModalAdapterService_windowRef, "f").nativeWindow.document, "f");
153
154
  __classPrivateFieldSet(this, _SkyModalAdapterService_bodyEl, __classPrivateFieldGet(this, _SkyModalAdapterService_windowRef, "f").nativeWindow.document.body, "f");
@@ -171,8 +172,54 @@ class SkyModalAdapterService {
171
172
  getModalOpener() {
172
173
  return __classPrivateFieldGet(this, _SkyModalAdapterService_docRef, "f").activeElement;
173
174
  }
175
+ /**
176
+ * Hides siblings of modal-host from screen readers
177
+ * @param hostElRef reference to modal-host element
178
+ */
179
+ hideHostSiblingsFromScreenReaders(hostElRef) {
180
+ const hostElement = hostElRef.nativeElement;
181
+ const hostSiblings = hostElement.parentElement.children;
182
+ for (let i = 0; i < hostSiblings.length; i++) {
183
+ const element = hostSiblings[i];
184
+ if (element !== hostElement &&
185
+ !element.hasAttribute('aria-live') &&
186
+ element.nodeName.toLowerCase() !== 'script' &&
187
+ element.nodeName.toLowerCase() !== 'style') {
188
+ // preserve previous aria-hidden status of elements outside of modal host
189
+ __classPrivateFieldGet(this, _SkyModalAdapterService_hostSiblingAriaHiddenCache, "f").set(element, element.getAttribute('aria-hidden'));
190
+ element.setAttribute('aria-hidden', 'true');
191
+ }
192
+ }
193
+ }
194
+ /**
195
+ * Restores modal-host siblings to screenreader status prior to modals being opened
196
+ */
197
+ unhideOrRestoreHostSiblingsFromScreenReaders() {
198
+ __classPrivateFieldGet(this, _SkyModalAdapterService_hostSiblingAriaHiddenCache, "f").forEach((previousValue, element) => {
199
+ // if element had aria-hidden status prior, restore status
200
+ if (element.parentElement) {
201
+ if (previousValue) {
202
+ element.setAttribute('aria-hidden', previousValue);
203
+ }
204
+ else {
205
+ element.removeAttribute('aria-hidden');
206
+ }
207
+ }
208
+ });
209
+ __classPrivateFieldGet(this, _SkyModalAdapterService_hostSiblingAriaHiddenCache, "f").clear();
210
+ }
211
+ hidePreviousModalFromScreenReaders(topModal) {
212
+ if (topModal && topModal.nativeElement.previousElementSibling) {
213
+ topModal.nativeElement.previousElementSibling.setAttribute('aria-hidden', 'true');
214
+ }
215
+ }
216
+ unhidePreviousModalFromScreenReaders(topModal) {
217
+ if (topModal && topModal.nativeElement.previousElementSibling) {
218
+ topModal.nativeElement.previousElementSibling.removeAttribute('aria-hidden');
219
+ }
220
+ }
174
221
  }
175
- _SkyModalAdapterService_docRef = new WeakMap(), _SkyModalAdapterService_bodyEl = new WeakMap(), _SkyModalAdapterService_windowRef = new WeakMap(), _SkyModalAdapterService_instances = new WeakSet(), _SkyModalAdapterService_addClassToBody = function _SkyModalAdapterService_addClassToBody(className) {
222
+ _SkyModalAdapterService_docRef = new WeakMap(), _SkyModalAdapterService_bodyEl = new WeakMap(), _SkyModalAdapterService_windowRef = new WeakMap(), _SkyModalAdapterService_hostSiblingAriaHiddenCache = new WeakMap(), _SkyModalAdapterService_instances = new WeakSet(), _SkyModalAdapterService_addClassToBody = function _SkyModalAdapterService_addClassToBody(className) {
176
223
  __classPrivateFieldGet(this, _SkyModalAdapterService_bodyEl, "f").classList.add(className);
177
224
  }, _SkyModalAdapterService_removeClassFromBody = function _SkyModalAdapterService_removeClassFromBody(className) {
178
225
  __classPrivateFieldGet(this, _SkyModalAdapterService_bodyEl, "f").classList.remove(className);
@@ -282,12 +329,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
282
329
  }] }];
283
330
  } });
284
331
 
285
- var _SkyModalHostComponent_instances, _SkyModalHostComponent_resolver, _SkyModalHostComponent_adapter, _SkyModalHostComponent_injector, _SkyModalHostComponent_router, _SkyModalHostComponent_changeDetector, _SkyModalHostComponent_modalHostContext, _SkyModalHostComponent_modalInstances, _SkyModalHostComponent_registerModalInstance, _SkyModalHostComponent_unregisterModalInstance, _SkyModalHostComponent_closeAllModalInstances;
332
+ var _SkyModalHostComponent_instances, _SkyModalHostComponent_resolver, _SkyModalHostComponent_adapter, _SkyModalHostComponent_injector, _SkyModalHostComponent_router, _SkyModalHostComponent_changeDetector, _SkyModalHostComponent_modalHostContext, _SkyModalHostComponent_elRef, _SkyModalHostComponent_modalInstances, _SkyModalHostComponent_registerModalInstance, _SkyModalHostComponent_unregisterModalInstance, _SkyModalHostComponent_closeAllModalInstances;
286
333
  /**
287
334
  * @internal
288
335
  */
289
336
  class SkyModalHostComponent {
290
- constructor(resolver, adapter, injector, router, changeDetector, modalHostContext) {
337
+ constructor(resolver, adapter, injector, router, changeDetector, modalHostContext, elRef) {
291
338
  _SkyModalHostComponent_instances.add(this);
292
339
  _SkyModalHostComponent_resolver.set(this, void 0);
293
340
  _SkyModalHostComponent_adapter.set(this, void 0);
@@ -295,6 +342,7 @@ class SkyModalHostComponent {
295
342
  _SkyModalHostComponent_router.set(this, void 0);
296
343
  _SkyModalHostComponent_changeDetector.set(this, void 0);
297
344
  _SkyModalHostComponent_modalHostContext.set(this, void 0);
345
+ _SkyModalHostComponent_elRef.set(this, void 0);
298
346
  _SkyModalHostComponent_modalInstances.set(this, []);
299
347
  __classPrivateFieldSet(this, _SkyModalHostComponent_resolver, resolver, "f");
300
348
  __classPrivateFieldSet(this, _SkyModalHostComponent_adapter, adapter, "f");
@@ -302,6 +350,7 @@ class SkyModalHostComponent {
302
350
  __classPrivateFieldSet(this, _SkyModalHostComponent_router, router, "f");
303
351
  __classPrivateFieldSet(this, _SkyModalHostComponent_changeDetector, changeDetector, "f");
304
352
  __classPrivateFieldSet(this, _SkyModalHostComponent_modalHostContext, modalHostContext, "f");
353
+ __classPrivateFieldSet(this, _SkyModalHostComponent_elRef, elRef, "f");
305
354
  }
306
355
  get modalOpen() {
307
356
  return SkyModalHostService.openModalCount > 0;
@@ -350,9 +399,26 @@ class SkyModalHostComponent {
350
399
  parent: __classPrivateFieldGet(this, _SkyModalHostComponent_injector, "f"),
351
400
  });
352
401
  const modalComponentRef = this.target.createComponent(factory, undefined, injector);
402
+ // modal element that was just opened
403
+ const modalElement = modalComponentRef.location;
353
404
  modalInstance.componentInstance = modalComponentRef.instance;
354
405
  __classPrivateFieldGet(this, _SkyModalHostComponent_instances, "m", _SkyModalHostComponent_registerModalInstance).call(this, modalInstance);
355
- function closeModal() {
406
+ // hidding all elements at the modal-host level from screenreaders when the a modal is opened
407
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").hideHostSiblingsFromScreenReaders(__classPrivateFieldGet(this, _SkyModalHostComponent_elRef, "f"));
408
+ if (SkyModalHostService.openModalCount > 1 &&
409
+ SkyModalHostService.topModal === hostService) {
410
+ // hiding the lower modals when more than one modal is opened
411
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").hidePreviousModalFromScreenReaders(modalElement);
412
+ }
413
+ const closeModal = () => {
414
+ // unhide siblings if last modal is closing
415
+ if (SkyModalHostService.openModalCount === 1) {
416
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").unhideOrRestoreHostSiblingsFromScreenReaders();
417
+ }
418
+ else if (SkyModalHostService.topModal === hostService) {
419
+ // if there are more than 1 modal then unhide the one behind this one before closing it
420
+ __classPrivateFieldGet(this, _SkyModalHostComponent_adapter, "f").unhidePreviousModalFromScreenReaders(modalElement);
421
+ }
356
422
  hostService.destroy();
357
423
  adapter.setPageScroll(SkyModalHostService.openModalCount > 0);
358
424
  adapter.toggleFullPageModalClass(SkyModalHostService.fullPageModalCount > 0);
@@ -362,7 +428,7 @@ class SkyModalHostComponent {
362
428
  modalOpener.focus();
363
429
  }
364
430
  modalComponentRef.destroy();
365
- }
431
+ };
366
432
  hostService.openHelp.subscribe((helpKey) => {
367
433
  modalInstance.openHelp(helpKey);
368
434
  });
@@ -384,7 +450,7 @@ class SkyModalHostComponent {
384
450
  __classPrivateFieldGet(this, _SkyModalHostComponent_changeDetector, "f").detectChanges();
385
451
  }
386
452
  }
387
- _SkyModalHostComponent_resolver = new WeakMap(), _SkyModalHostComponent_adapter = new WeakMap(), _SkyModalHostComponent_injector = new WeakMap(), _SkyModalHostComponent_router = new WeakMap(), _SkyModalHostComponent_changeDetector = new WeakMap(), _SkyModalHostComponent_modalHostContext = new WeakMap(), _SkyModalHostComponent_modalInstances = new WeakMap(), _SkyModalHostComponent_instances = new WeakSet(), _SkyModalHostComponent_registerModalInstance = function _SkyModalHostComponent_registerModalInstance(instance) {
453
+ _SkyModalHostComponent_resolver = new WeakMap(), _SkyModalHostComponent_adapter = new WeakMap(), _SkyModalHostComponent_injector = new WeakMap(), _SkyModalHostComponent_router = new WeakMap(), _SkyModalHostComponent_changeDetector = new WeakMap(), _SkyModalHostComponent_modalHostContext = new WeakMap(), _SkyModalHostComponent_elRef = new WeakMap(), _SkyModalHostComponent_modalInstances = new WeakMap(), _SkyModalHostComponent_instances = new WeakSet(), _SkyModalHostComponent_registerModalInstance = function _SkyModalHostComponent_registerModalInstance(instance) {
388
454
  __classPrivateFieldGet(this, _SkyModalHostComponent_modalInstances, "f").push(instance);
389
455
  }, _SkyModalHostComponent_unregisterModalInstance = function _SkyModalHostComponent_unregisterModalInstance(instance) {
390
456
  __classPrivateFieldGet(this, _SkyModalHostComponent_modalInstances, "f").slice(__classPrivateFieldGet(this, _SkyModalHostComponent_modalInstances, "f").indexOf(instance), 1);
@@ -393,12 +459,12 @@ _SkyModalHostComponent_resolver = new WeakMap(), _SkyModalHostComponent_adapter
393
459
  instance.close();
394
460
  }
395
461
  };
396
- SkyModalHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: SkyModalAdapterService }, { token: i0.Injector }, { token: i2$1.Router }, { token: i0.ChangeDetectorRef }, { token: SkyModalHostContext }], target: i0.ɵɵFactoryTarget.Component });
462
+ SkyModalHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: SkyModalAdapterService }, { token: i0.Injector }, { token: i2$1.Router }, { token: i0.ChangeDetectorRef }, { token: SkyModalHostContext }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
397
463
  SkyModalHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", 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;top:0;left:0;bottom:0;right:0}\n"], directives: [{ type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], viewProviders: [SkyModalAdapterService] });
398
464
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalHostComponent, decorators: [{
399
465
  type: Component,
400
466
  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;top:0;left:0;bottom:0;right:0}\n"] }]
401
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: SkyModalAdapterService }, { type: i0.Injector }, { type: i2$1.Router }, { type: i0.ChangeDetectorRef }, { type: SkyModalHostContext }]; }, propDecorators: { target: [{
467
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: SkyModalAdapterService }, { type: i0.Injector }, { type: i2$1.Router }, { type: i0.ChangeDetectorRef }, { type: SkyModalHostContext }, { type: i0.ElementRef }]; }, propDecorators: { target: [{
402
468
  type: ViewChild,
403
469
  args: ['target', {
404
470
  read: ViewContainerRef,