@skyux/modals 8.7.0 → 9.0.0-alpha.0
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/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
|
@@ -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==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const BASE_Z_INDEX = 1040;
|
|
5
|
+
const modalHosts = [];
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
* @dynamic
|
|
9
|
+
*/
|
|
10
|
+
export class SkyModalHostService {
|
|
11
|
+
static get openModalCount() {
|
|
12
|
+
return modalHosts.length;
|
|
13
|
+
}
|
|
14
|
+
static get fullPageModalCount() {
|
|
15
|
+
const fullPageModals = modalHosts.filter((modal) => modal.fullPage);
|
|
16
|
+
return fullPageModals.length;
|
|
17
|
+
}
|
|
18
|
+
static get backdropZIndex() {
|
|
19
|
+
return BASE_Z_INDEX + modalHosts.length * 10;
|
|
20
|
+
}
|
|
21
|
+
static get topModal() {
|
|
22
|
+
return modalHosts[modalHosts.length - 1];
|
|
23
|
+
}
|
|
24
|
+
constructor() {
|
|
25
|
+
this.close = new Subject();
|
|
26
|
+
this.fullPage = false;
|
|
27
|
+
this.openHelp = new Subject();
|
|
28
|
+
this.zIndex = this.#calculateZIndex();
|
|
29
|
+
modalHosts.push(this);
|
|
30
|
+
}
|
|
31
|
+
getModalZIndex() {
|
|
32
|
+
return this.zIndex;
|
|
33
|
+
}
|
|
34
|
+
onClose() {
|
|
35
|
+
this.close.next();
|
|
36
|
+
}
|
|
37
|
+
onOpenHelp(helpKey) {
|
|
38
|
+
this.openHelp.next(helpKey);
|
|
39
|
+
}
|
|
40
|
+
destroy() {
|
|
41
|
+
modalHosts.splice(modalHosts.indexOf(this), 1);
|
|
42
|
+
}
|
|
43
|
+
#calculateZIndex() {
|
|
44
|
+
const zIndexArray = modalHosts.map((hostService) => hostService.zIndex);
|
|
45
|
+
if (zIndexArray.length === 0) {
|
|
46
|
+
return BASE_Z_INDEX + 11;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const currentMaxZIndex = Math.max(...zIndexArray);
|
|
50
|
+
return currentMaxZIndex + 10;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
54
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostService, providedIn: 'root' }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalHostService, decorators: [{
|
|
57
|
+
type: Injectable,
|
|
58
|
+
args: [{
|
|
59
|
+
providedIn: 'root',
|
|
60
|
+
}]
|
|
61
|
+
}], ctorParameters: function () { return []; } });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzFCLE1BQU0sVUFBVSxHQUEwQixFQUFFLENBQUM7QUFFN0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQUN2QixNQUFNLEtBQUssY0FBYztRQUM5QixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVNLE1BQU0sS0FBSyxrQkFBa0I7UUFDbEMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxLQUFLLGNBQWM7UUFDOUIsT0FBTyxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQU9EO1FBTE8sVUFBSyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDNUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUl0QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLE9BQU87UUFDWixVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE9BQU8sWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0wsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDbEQsT0FBTyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDOzhHQXBEVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IEJBU0VfWl9JTkRFWCA9IDEwNDA7XG5jb25zdCBtb2RhbEhvc3RzOiBTa3lNb2RhbEhvc3RTZXJ2aWNlW10gPSBbXTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEhvc3RTZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBnZXQgb3Blbk1vZGFsQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9kYWxIb3N0cy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBmdWxsUGFnZU1vZGFsQ291bnQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBmdWxsUGFnZU1vZGFscyA9IG1vZGFsSG9zdHMuZmlsdGVyKChtb2RhbCkgPT4gbW9kYWwuZnVsbFBhZ2UpO1xuICAgIHJldHVybiBmdWxsUGFnZU1vZGFscy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBiYWNrZHJvcFpJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiBCQVNFX1pfSU5ERVggKyBtb2RhbEhvc3RzLmxlbmd0aCAqIDEwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgdG9wTW9kYWwoKTogU2t5TW9kYWxIb3N0U2VydmljZSB7XG4gICAgcmV0dXJuIG1vZGFsSG9zdHNbbW9kYWxIb3N0cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBmdWxsUGFnZSA9IGZhbHNlO1xuICBwdWJsaWMgb3BlbkhlbHAgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHB1YmxpYyB6SW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnpJbmRleCA9IHRoaXMuI2NhbGN1bGF0ZVpJbmRleCgpO1xuICAgIG1vZGFsSG9zdHMucHVzaCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2RhbFpJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnpJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIG9uT3BlbkhlbHAoaGVscEtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGVuSGVscC5uZXh0KGhlbHBLZXkpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgbW9kYWxIb3N0cy5zcGxpY2UobW9kYWxIb3N0cy5pbmRleE9mKHRoaXMpLCAxKTtcbiAgfVxuXG4gICNjYWxjdWxhdGVaSW5kZXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCB6SW5kZXhBcnJheSA9IG1vZGFsSG9zdHMubWFwKChob3N0U2VydmljZSkgPT4gaG9zdFNlcnZpY2UuekluZGV4KTtcbiAgICBpZiAoekluZGV4QXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gQkFTRV9aX0lOREVYICsgMTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRNYXhaSW5kZXggPSBNYXRoLm1heCguLi56SW5kZXhBcnJheSk7XG4gICAgICByZXR1cm4gY3VycmVudE1heFpJbmRleCArIDEwO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { SkyModalBeforeCloseHandler } from './modal-before-close-handler';
|
|
3
|
+
import { SkyModalCloseArgs } from './modal-close-args';
|
|
4
|
+
export class SkyModalInstance {
|
|
5
|
+
/**
|
|
6
|
+
* An event that the modal instance emits when it is about to close.
|
|
7
|
+
* It emits a `SkyModalBeforeCloseHandler` object with a `closeModal` method
|
|
8
|
+
* that closes the modal. If a subscription exists for this event,
|
|
9
|
+
* the modal does not close until the subscriber calls the `closeModal` method.
|
|
10
|
+
*/
|
|
11
|
+
get beforeClose() {
|
|
12
|
+
return this.#_beforeClose;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* An event that the modal instance emits when it closes.
|
|
16
|
+
* It emits a `SkyModalCloseArgs` object with a `data` property that includes
|
|
17
|
+
* data passed from users on close or save and a `reason` property that indicates
|
|
18
|
+
* whether the modal was saved or closed without saving.
|
|
19
|
+
* The `reason` property accepts any string value.
|
|
20
|
+
* Common examples include `"cancel"`, `"close"`, and `"save"`.
|
|
21
|
+
*/
|
|
22
|
+
get closed() {
|
|
23
|
+
return this.#_closed;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* An event that the modal instance emits when users click
|
|
27
|
+
* the <i class="fa fa-question-circle" aria-hidden="true"></i> button.
|
|
28
|
+
* If a `helpKey` parameter was specified, the `helpOpened` event broadcasts the `helpKey`.
|
|
29
|
+
*/
|
|
30
|
+
get helpOpened() {
|
|
31
|
+
return this.#_helpOpened;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Sets the component adapter for the instance. This is used internally for actions such as scrolling the content.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
set adapter(value) {
|
|
38
|
+
this.#adapter = value;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sets the component ref for the instance. This is used to extract the component instance for the public API and the element ref for internal use.
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
set componentRef(value) {
|
|
45
|
+
this.componentInstance = value.instance;
|
|
46
|
+
this.#elementRef = value.location;
|
|
47
|
+
}
|
|
48
|
+
#_beforeClose = new Subject();
|
|
49
|
+
#_closed = new Subject();
|
|
50
|
+
#_helpOpened = new Subject();
|
|
51
|
+
#adapter;
|
|
52
|
+
#elementRef;
|
|
53
|
+
/**
|
|
54
|
+
* Closes the modal instance.
|
|
55
|
+
* @param result Specifies an object to emit to subscribers of the `closed` event of the
|
|
56
|
+
* modal instance. The `SkyModalInstance` provider can be injected into a component's constructor
|
|
57
|
+
* so that this `close` function can be called from a button in the `sky-modal-footer`.
|
|
58
|
+
* @param reason Specifies the reason for the modal closing, with the default reason of `"close"`.
|
|
59
|
+
* @param ignoreBeforeClose Indicates whether to ignore the modal instance's `beforeClose` event.
|
|
60
|
+
*/
|
|
61
|
+
close(result, reason, ignoreBeforeClose) {
|
|
62
|
+
if (reason === undefined) {
|
|
63
|
+
reason = 'close';
|
|
64
|
+
}
|
|
65
|
+
this.#closeModal(reason, result, ignoreBeforeClose);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Closes the modal instance with `reason="cancel"`.
|
|
69
|
+
* @param result Specifies an object to emit to subscribers of the `closed` event of the modal
|
|
70
|
+
* instance. The `SkyModalInstance` provider can be injected into a component's constructor so
|
|
71
|
+
* that this cancel function can be called from a button in the `sky-modal-footer`.
|
|
72
|
+
*/
|
|
73
|
+
cancel(result) {
|
|
74
|
+
this.#closeModal('cancel', result);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Closes the modal instance with `reason="save"`.
|
|
78
|
+
* @param result Specifies an object to emit to subscribers of the `closed` event of the modal
|
|
79
|
+
* instance. The `SkyModalInstance` provider can be injected into a component's constructor so
|
|
80
|
+
* that this `save` function can be called from a button in `the sky-modal-footer`.
|
|
81
|
+
*/
|
|
82
|
+
save(result) {
|
|
83
|
+
this.#closeModal('save', result);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Scrolls the modal content area to the top of its scrollable area.
|
|
87
|
+
*/
|
|
88
|
+
scrollContentToTop() {
|
|
89
|
+
if (this.#adapter && this.#elementRef) {
|
|
90
|
+
this.#adapter.scrollContentToTop(this.#elementRef);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Triggers the `helpOpened` event that broadcasts a `helpKey` parameter to open
|
|
95
|
+
* when users click the <i class="fa fa-question-circle" aria-hidden="true"></i> button.
|
|
96
|
+
* @param helpKey Specifies a string to emit to subscribers of
|
|
97
|
+
* the modal instance's `helpOpened` event. Consumers can inject the `SkyModalInstance` provider
|
|
98
|
+
* into a component's constructor to call the `openHelp` function in the modal template.
|
|
99
|
+
*/
|
|
100
|
+
openHelp(helpKey) {
|
|
101
|
+
this.#_helpOpened.next(helpKey);
|
|
102
|
+
}
|
|
103
|
+
#closeModal(type, result, ignoreBeforeClose = false) {
|
|
104
|
+
const args = new SkyModalCloseArgs();
|
|
105
|
+
args.reason = type;
|
|
106
|
+
args.data = result;
|
|
107
|
+
if (this.#_beforeClose.observers.length === 0 || ignoreBeforeClose) {
|
|
108
|
+
this.#notifyClosed(args);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
this.#_beforeClose.next(new SkyModalBeforeCloseHandler(() => {
|
|
112
|
+
this.#notifyClosed(args);
|
|
113
|
+
}, args));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
#notifyClosed(args) {
|
|
117
|
+
this.#_closed.next(args);
|
|
118
|
+
this.#_closed.complete();
|
|
119
|
+
this.#_beforeClose.complete();
|
|
120
|
+
this.#_helpOpened.complete();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzNDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7O09BS0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFBVyxPQUFPLENBQUMsS0FBNkI7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsWUFBWSxDQUFDLEtBQXdCO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxHQUFHLElBQUksT0FBTyxFQUE4QixDQUFDO0lBRTFELFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztJQUU1QyxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUVyQyxRQUFRLENBQXFDO0lBQzdDLFdBQVcsQ0FBeUI7SUFFcEM7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FDVixNQUFZLEVBQ1osTUFBZSxFQUNmLGlCQUEyQjtRQUUzQixJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxHQUFHLE9BQU8sQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxNQUFZO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FBQyxNQUFZO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLGtCQUFrQjtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxRQUFRLENBQUMsT0FBZTtRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVksRUFBRSxNQUFZLEVBQUUsaUJBQWlCLEdBQUcsS0FBSztRQUMvRCxNQUFNLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGlCQUFpQixFQUFFO1lBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ1QsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUF1QjtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxCZWZvcmVDbG9zZUhhbmRsZXIgfSBmcm9tICcuL21vZGFsLWJlZm9yZS1jbG9zZS1oYW5kbGVyJztcbmltcG9ydCB7IFNreU1vZGFsQ2xvc2VBcmdzIH0gZnJvbSAnLi9tb2RhbC1jbG9zZS1hcmdzJztcblxuZXhwb3J0IGNsYXNzIFNreU1vZGFsSW5zdGFuY2Uge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCB0aGUgbW9kYWwgaW5zdGFuY2UgZW1pdHMgd2hlbiBpdCBpcyBhYm91dCB0byBjbG9zZS5cbiAgICogSXQgZW1pdHMgYSBgU2t5TW9kYWxCZWZvcmVDbG9zZUhhbmRsZXJgIG9iamVjdCB3aXRoIGEgYGNsb3NlTW9kYWxgIG1ldGhvZFxuICAgKiB0aGF0IGNsb3NlcyB0aGUgbW9kYWwuIElmIGEgc3Vic2NyaXB0aW9uIGV4aXN0cyBmb3IgdGhpcyBldmVudCxcbiAgICogdGhlIG1vZGFsIGRvZXMgbm90IGNsb3NlIHVudGlsIHRoZSBzdWJzY3JpYmVyIGNhbGxzIHRoZSBgY2xvc2VNb2RhbGAgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIGdldCBiZWZvcmVDbG9zZSgpOiBPYnNlcnZhYmxlPFNreU1vZGFsQmVmb3JlQ2xvc2VIYW5kbGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuI19iZWZvcmVDbG9zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBldmVudCB0aGF0IHRoZSBtb2RhbCBpbnN0YW5jZSBlbWl0cyB3aGVuIGl0IGNsb3Nlcy5cbiAgICogSXQgZW1pdHMgYSBgU2t5TW9kYWxDbG9zZUFyZ3NgIG9iamVjdCB3aXRoIGEgYGRhdGFgIHByb3BlcnR5IHRoYXQgaW5jbHVkZXNcbiAgICogZGF0YSBwYXNzZWQgZnJvbSB1c2VycyBvbiBjbG9zZSBvciBzYXZlIGFuZCBhIGByZWFzb25gIHByb3BlcnR5IHRoYXQgaW5kaWNhdGVzXG4gICAqIHdoZXRoZXIgdGhlIG1vZGFsIHdhcyBzYXZlZCBvciBjbG9zZWQgd2l0aG91dCBzYXZpbmcuXG4gICAqIFRoZSBgcmVhc29uYCBwcm9wZXJ0eSBhY2NlcHRzIGFueSBzdHJpbmcgdmFsdWUuXG4gICAqIENvbW1vbiBleGFtcGxlcyBpbmNsdWRlIGBcImNhbmNlbFwiYCwgYFwiY2xvc2VcImAsIGFuZCBgXCJzYXZlXCJgLlxuICAgKi9cbiAgcHVibGljIGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTxTa3lNb2RhbENsb3NlQXJncz4ge1xuICAgIHJldHVybiB0aGlzLiNfY2xvc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgdGhlIG1vZGFsIGluc3RhbmNlIGVtaXRzIHdoZW4gdXNlcnMgY2xpY2tcbiAgICogdGhlIDxpIGNsYXNzPVwiZmEgZmEtcXVlc3Rpb24tY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBidXR0b24uXG4gICAqIElmIGEgYGhlbHBLZXlgIHBhcmFtZXRlciB3YXMgc3BlY2lmaWVkLCB0aGUgYGhlbHBPcGVuZWRgIGV2ZW50IGJyb2FkY2FzdHMgdGhlIGBoZWxwS2V5YC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaGVscE9wZW5lZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLiNfaGVscE9wZW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIHByb3ZpZGVkIGNvbXBvbmVudCdzIGNsYXNzLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHVibGljIGNvbXBvbmVudEluc3RhbmNlOiBhbnk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCBhZGFwdGVyIGZvciB0aGUgaW5zdGFuY2UuIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBhY3Rpb25zIHN1Y2ggYXMgc2Nyb2xsaW5nIHRoZSBjb250ZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzZXQgYWRhcHRlcih2YWx1ZTogU2t5TW9kYWxBZGFwdGVyU2VydmljZSkge1xuICAgIHRoaXMuI2FkYXB0ZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQgcmVmIGZvciB0aGUgaW5zdGFuY2UuIFRoaXMgaXMgdXNlZCB0byBleHRyYWN0IHRoZSBjb21wb25lbnQgaW5zdGFuY2UgZm9yIHRoZSBwdWJsaWMgQVBJIGFuZCB0aGUgZWxlbWVudCByZWYgZm9yIGludGVybmFsIHVzZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0IGNvbXBvbmVudFJlZih2YWx1ZTogQ29tcG9uZW50UmVmPGFueT4pIHtcbiAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdmFsdWUuaW5zdGFuY2U7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IHZhbHVlLmxvY2F0aW9uO1xuICB9XG5cbiAgI19iZWZvcmVDbG9zZSA9IG5ldyBTdWJqZWN0PFNreU1vZGFsQmVmb3JlQ2xvc2VIYW5kbGVyPigpO1xuXG4gICNfY2xvc2VkID0gbmV3IFN1YmplY3Q8U2t5TW9kYWxDbG9zZUFyZ3M+KCk7XG5cbiAgI19oZWxwT3BlbmVkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICNhZGFwdGVyOiBTa3lNb2RhbEFkYXB0ZXJTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICAjZWxlbWVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHJlc3VsdCBTcGVjaWZpZXMgYW4gb2JqZWN0IHRvIGVtaXQgdG8gc3Vic2NyaWJlcnMgb2YgdGhlIGBjbG9zZWRgIGV2ZW50IG9mIHRoZVxuICAgKiBtb2RhbCBpbnN0YW5jZS4gVGhlIGBTa3lNb2RhbEluc3RhbmNlYCBwcm92aWRlciBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yXG4gICAqIHNvIHRoYXQgdGhpcyBgY2xvc2VgIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhIGJ1dHRvbiBpbiB0aGUgYHNreS1tb2RhbC1mb290ZXJgLlxuICAgKiBAcGFyYW0gcmVhc29uIFNwZWNpZmllcyB0aGUgcmVhc29uIGZvciB0aGUgbW9kYWwgY2xvc2luZywgd2l0aCB0aGUgZGVmYXVsdCByZWFzb24gb2YgYFwiY2xvc2VcImAuXG4gICAqIEBwYXJhbSBpZ25vcmVCZWZvcmVDbG9zZSBJbmRpY2F0ZXMgd2hldGhlciB0byBpZ25vcmUgdGhlIG1vZGFsIGluc3RhbmNlJ3MgYGJlZm9yZUNsb3NlYCBldmVudC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZShcbiAgICByZXN1bHQ/OiBhbnksXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIGlnbm9yZUJlZm9yZUNsb3NlPzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBpZiAocmVhc29uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlYXNvbiA9ICdjbG9zZSc7XG4gICAgfVxuXG4gICAgdGhpcy4jY2xvc2VNb2RhbChyZWFzb24sIHJlc3VsdCwgaWdub3JlQmVmb3JlQ2xvc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbW9kYWwgaW5zdGFuY2Ugd2l0aCBgcmVhc29uPVwiY2FuY2VsXCJgLlxuICAgKiBAcGFyYW0gcmVzdWx0IFNwZWNpZmllcyBhbiBvYmplY3QgdG8gZW1pdCB0byBzdWJzY3JpYmVycyBvZiB0aGUgYGNsb3NlZGAgZXZlbnQgb2YgdGhlIG1vZGFsXG4gICAqIGluc3RhbmNlLiBUaGUgYFNreU1vZGFsSW5zdGFuY2VgIHByb3ZpZGVyIGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgY29tcG9uZW50J3MgY29uc3RydWN0b3Igc29cbiAgICogdGhhdCB0aGlzIGNhbmNlbCBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYSBidXR0b24gaW4gdGhlIGBza3ktbW9kYWwtZm9vdGVyYC5cbiAgICovXG4gIHB1YmxpYyBjYW5jZWwocmVzdWx0PzogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jY2xvc2VNb2RhbCgnY2FuY2VsJywgcmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1vZGFsIGluc3RhbmNlIHdpdGggYHJlYXNvbj1cInNhdmVcImAuXG4gICAqIEBwYXJhbSByZXN1bHQgU3BlY2lmaWVzIGFuIG9iamVjdCB0byBlbWl0IHRvIHN1YnNjcmliZXJzIG9mIHRoZSBgY2xvc2VkYCBldmVudCBvZiB0aGUgbW9kYWxcbiAgICogaW5zdGFuY2UuIFRoZSBgU2t5TW9kYWxJbnN0YW5jZWAgcHJvdmlkZXIgY2FuIGJlIGluamVjdGVkIGludG8gYSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBzb1xuICAgKiB0aGF0IHRoaXMgYHNhdmVgIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhIGJ1dHRvbiBpbiBgdGhlIHNreS1tb2RhbC1mb290ZXJgLlxuICAgKi9cbiAgcHVibGljIHNhdmUocmVzdWx0PzogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jY2xvc2VNb2RhbCgnc2F2ZScsIHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xscyB0aGUgbW9kYWwgY29udGVudCBhcmVhIHRvIHRoZSB0b3Agb2YgaXRzIHNjcm9sbGFibGUgYXJlYS5cbiAgICovXG4gIHB1YmxpYyBzY3JvbGxDb250ZW50VG9Ub3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2FkYXB0ZXIgJiYgdGhpcy4jZWxlbWVudFJlZikge1xuICAgICAgdGhpcy4jYWRhcHRlci5zY3JvbGxDb250ZW50VG9Ub3AodGhpcy4jZWxlbWVudFJlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBgaGVscE9wZW5lZGAgZXZlbnQgdGhhdCBicm9hZGNhc3RzIGEgYGhlbHBLZXlgIHBhcmFtZXRlciB0byBvcGVuXG4gICAqIHdoZW4gdXNlcnMgY2xpY2sgdGhlIDxpIGNsYXNzPVwiZmEgZmEtcXVlc3Rpb24tY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBidXR0b24uXG4gICAqIEBwYXJhbSBoZWxwS2V5IFNwZWNpZmllcyBhIHN0cmluZyB0byBlbWl0IHRvIHN1YnNjcmliZXJzIG9mXG4gICAqIHRoZSBtb2RhbCBpbnN0YW5jZSdzIGBoZWxwT3BlbmVkYCBldmVudC4gQ29uc3VtZXJzIGNhbiBpbmplY3QgdGhlIGBTa3lNb2RhbEluc3RhbmNlYCBwcm92aWRlclxuICAgKiBpbnRvIGEgY29tcG9uZW50J3MgY29uc3RydWN0b3IgdG8gY2FsbCB0aGUgYG9wZW5IZWxwYCBmdW5jdGlvbiBpbiB0aGUgbW9kYWwgdGVtcGxhdGUuXG4gICAqL1xuICBwdWJsaWMgb3BlbkhlbHAoaGVscEtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jX2hlbHBPcGVuZWQubmV4dChoZWxwS2V5KTtcbiAgfVxuXG4gICNjbG9zZU1vZGFsKHR5cGU6IHN0cmluZywgcmVzdWx0PzogYW55LCBpZ25vcmVCZWZvcmVDbG9zZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgYXJncyA9IG5ldyBTa3lNb2RhbENsb3NlQXJncygpO1xuXG4gICAgYXJncy5yZWFzb24gPSB0eXBlO1xuICAgIGFyZ3MuZGF0YSA9IHJlc3VsdDtcblxuICAgIGlmICh0aGlzLiNfYmVmb3JlQ2xvc2Uub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCB8fCBpZ25vcmVCZWZvcmVDbG9zZSkge1xuICAgICAgdGhpcy4jbm90aWZ5Q2xvc2VkKGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfYmVmb3JlQ2xvc2UubmV4dChcbiAgICAgICAgbmV3IFNreU1vZGFsQmVmb3JlQ2xvc2VIYW5kbGVyKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNub3RpZnlDbG9zZWQoYXJncyk7XG4gICAgICAgIH0sIGFyZ3MpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNub3RpZnlDbG9zZWQoYXJnczogU2t5TW9kYWxDbG9zZUFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLiNfY2xvc2VkLm5leHQoYXJncyk7XG4gICAgdGhpcy4jX2Nsb3NlZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI19iZWZvcmVDbG9zZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI19oZWxwT3BlbmVkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Directive, HostBinding, Input, inject, } from '@angular/core';
|
|
2
|
+
import { SkyLibResourcesService } from '@skyux/i18n';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { SkyConfirmType } from '../confirm/confirm-type';
|
|
6
|
+
import { SkyConfirmService } from '../confirm/confirm.service';
|
|
7
|
+
import { SkyModalInstance } from './modal-instance';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* Provides a way to mark a modal as "dirty" and displays a confirmation
|
|
11
|
+
* message when a user closes the modal without saving.
|
|
12
|
+
*/
|
|
13
|
+
export class SkyModalIsDirtyDirective {
|
|
14
|
+
constructor() {
|
|
15
|
+
/**
|
|
16
|
+
* Whether the user edited an input on the modal.
|
|
17
|
+
* @required
|
|
18
|
+
*/
|
|
19
|
+
this.isDirty = false;
|
|
20
|
+
this.#ngUnsubscribe = new Subject();
|
|
21
|
+
this.#modalInstance = inject(SkyModalInstance);
|
|
22
|
+
this.#confirmSvc = inject(SkyConfirmService);
|
|
23
|
+
this.#resourcesSvc = inject(SkyLibResourcesService);
|
|
24
|
+
}
|
|
25
|
+
#ngUnsubscribe;
|
|
26
|
+
#modalInstance;
|
|
27
|
+
#confirmSvc;
|
|
28
|
+
#resourcesSvc;
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.#modalInstance.beforeClose
|
|
31
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
32
|
+
.subscribe((handler) => this.#promptIfDirty(handler));
|
|
33
|
+
}
|
|
34
|
+
ngOnDestroy() {
|
|
35
|
+
this.#ngUnsubscribe.next();
|
|
36
|
+
this.#ngUnsubscribe.complete();
|
|
37
|
+
}
|
|
38
|
+
#promptIfDirty(handler) {
|
|
39
|
+
if (this.isDirty && handler.closeArgs.reason === 'close') {
|
|
40
|
+
this.#resourcesSvc
|
|
41
|
+
.getStrings({
|
|
42
|
+
message: 'skyux_modal_dirty_default_message',
|
|
43
|
+
discardActionText: 'skyux_modal_dirty_default_discard_changes_text',
|
|
44
|
+
keepActionText: 'skyux_modal_dirty_default_keep_working_text',
|
|
45
|
+
})
|
|
46
|
+
.subscribe((textValues) => {
|
|
47
|
+
const discardAction = 'discard';
|
|
48
|
+
const keepAction = 'keep';
|
|
49
|
+
this.#confirmSvc
|
|
50
|
+
.open({
|
|
51
|
+
message: textValues.message,
|
|
52
|
+
buttons: [
|
|
53
|
+
{
|
|
54
|
+
action: discardAction,
|
|
55
|
+
text: textValues.discardActionText,
|
|
56
|
+
styleType: 'primary',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
action: keepAction,
|
|
60
|
+
text: textValues.keepActionText,
|
|
61
|
+
styleType: 'link',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
type: SkyConfirmType.Custom,
|
|
65
|
+
})
|
|
66
|
+
.closed.subscribe((args) => {
|
|
67
|
+
if (args.action === discardAction) {
|
|
68
|
+
handler.closeModal();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
handler.closeModal();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalIsDirtyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
78
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: SkyModalIsDirtyDirective, selector: "sky-modal[isDirty]", inputs: { isDirty: "isDirty" }, host: { properties: { "attr.data-sky-modal-is-dirty": "this.isDirty" } }, ngImport: i0 }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalIsDirtyDirective, decorators: [{
|
|
81
|
+
type: Directive,
|
|
82
|
+
args: [{
|
|
83
|
+
// Since this is limited to sky-modal, it should be safe to
|
|
84
|
+
// leave off the sky prefix.
|
|
85
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
86
|
+
selector: 'sky-modal[isDirty]',
|
|
87
|
+
}]
|
|
88
|
+
}], propDecorators: { isDirty: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}, {
|
|
91
|
+
type: HostBinding,
|
|
92
|
+
args: ['attr.data-sky-modal-is-dirty']
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaXMtZGlydHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwtaXMtZGlydHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFcEQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLHdCQUF3QjtJQU5yQztRQU9FOzs7V0FHRztRQUtJLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFZCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFckMsbUJBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FvRHpEO0lBeERVLGNBQWMsQ0FBdUI7SUFFckMsY0FBYyxDQUE0QjtJQUMxQyxXQUFXLENBQTZCO0lBQ3hDLGFBQWEsQ0FBa0M7SUFFakQsUUFBUTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVzthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFtQztRQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFO1lBQ3hELElBQUksQ0FBQyxhQUFhO2lCQUNmLFVBQVUsQ0FBQztnQkFDVixPQUFPLEVBQUUsbUNBQW1DO2dCQUM1QyxpQkFBaUIsRUFBRSxnREFBZ0Q7Z0JBQ25FLGNBQWMsRUFBRSw2Q0FBNkM7YUFDOUQsQ0FBQztpQkFDRCxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO2dCQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxXQUFXO3FCQUNiLElBQUksQ0FBQztvQkFDSixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87b0JBQzNCLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxNQUFNLEVBQUUsYUFBYTs0QkFDckIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7NEJBQ2xDLFNBQVMsRUFBRSxTQUFTO3lCQUNyQjt3QkFDRDs0QkFDRSxNQUFNLEVBQUUsVUFBVTs0QkFDbEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxjQUFjOzRCQUMvQixTQUFTLEVBQUUsTUFBTTt5QkFDbEI7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxNQUFNO2lCQUM1QixDQUFDO3FCQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGFBQWEsRUFBRTt3QkFDakMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO3FCQUN0QjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNMLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7OEdBbEVVLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTO21CQUFDO29CQUNULDJEQUEyRDtvQkFDM0QsNEJBQTRCO29CQUM1Qiw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9COzhCQVVRLE9BQU87c0JBSmIsS0FBSzs7c0JBR0wsV0FBVzt1QkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUNvbmZpcm1UeXBlIH0gZnJvbSAnLi4vY29uZmlybS9jb25maXJtLXR5cGUnO1xuaW1wb3J0IHsgU2t5Q29uZmlybVNlcnZpY2UgfSBmcm9tICcuLi9jb25maXJtL2NvbmZpcm0uc2VydmljZSc7XG5cbmltcG9ydCB7IFNreU1vZGFsQmVmb3JlQ2xvc2VIYW5kbGVyIH0gZnJvbSAnLi9tb2RhbC1iZWZvcmUtY2xvc2UtaGFuZGxlcic7XG5pbXBvcnQgeyBTa3lNb2RhbEluc3RhbmNlIH0gZnJvbSAnLi9tb2RhbC1pbnN0YW5jZSc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSB3YXkgdG8gbWFyayBhIG1vZGFsIGFzIFwiZGlydHlcIiBhbmQgZGlzcGxheXMgYSBjb25maXJtYXRpb25cbiAqIG1lc3NhZ2Ugd2hlbiBhIHVzZXIgY2xvc2VzIHRoZSBtb2RhbCB3aXRob3V0IHNhdmluZy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIC8vIFNpbmNlIHRoaXMgaXMgbGltaXRlZCB0byBza3ktbW9kYWwsIGl0IHNob3VsZCBiZSBzYWZlIHRvXG4gIC8vIGxlYXZlIG9mZiB0aGUgc2t5IHByZWZpeC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdza3ktbW9kYWxbaXNEaXJ0eV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbElzRGlydHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGVkaXRlZCBhbiBpbnB1dCBvbiB0aGUgbW9kYWwuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgLy8gVGhpcyBhdHRyaWJ1dGUgaXMgYmVpbmcgYXBwbGllZCB0byB0aGUgaG9zdCB0byBzdXBwb3J0XG4gIC8vIHVuaXQgdGVzdGluZyB0aGlzIGZlYXR1cmUuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNreS1tb2RhbC1pcy1kaXJ0eScpXG4gIHB1YmxpYyBpc0RpcnR5ID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5ICNtb2RhbEluc3RhbmNlID0gaW5qZWN0KFNreU1vZGFsSW5zdGFuY2UpO1xuICByZWFkb25seSAjY29uZmlybVN2YyA9IGluamVjdChTa3lDb25maXJtU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI21vZGFsSW5zdGFuY2UuYmVmb3JlQ2xvc2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGhhbmRsZXIpID0+IHRoaXMuI3Byb21wdElmRGlydHkoaGFuZGxlcikpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gICNwcm9tcHRJZkRpcnR5KGhhbmRsZXI6IFNreU1vZGFsQmVmb3JlQ2xvc2VIYW5kbGVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXJ0eSAmJiBoYW5kbGVyLmNsb3NlQXJncy5yZWFzb24gPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgICAuZ2V0U3RyaW5ncyh7XG4gICAgICAgICAgbWVzc2FnZTogJ3NreXV4X21vZGFsX2RpcnR5X2RlZmF1bHRfbWVzc2FnZScsXG4gICAgICAgICAgZGlzY2FyZEFjdGlvblRleHQ6ICdza3l1eF9tb2RhbF9kaXJ0eV9kZWZhdWx0X2Rpc2NhcmRfY2hhbmdlc190ZXh0JyxcbiAgICAgICAgICBrZWVwQWN0aW9uVGV4dDogJ3NreXV4X21vZGFsX2RpcnR5X2RlZmF1bHRfa2VlcF93b3JraW5nX3RleHQnLFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKCh0ZXh0VmFsdWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGlzY2FyZEFjdGlvbiA9ICdkaXNjYXJkJztcbiAgICAgICAgICBjb25zdCBrZWVwQWN0aW9uID0gJ2tlZXAnO1xuXG4gICAgICAgICAgdGhpcy4jY29uZmlybVN2Y1xuICAgICAgICAgICAgLm9wZW4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiB0ZXh0VmFsdWVzLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhY3Rpb246IGRpc2NhcmRBY3Rpb24sXG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0VmFsdWVzLmRpc2NhcmRBY3Rpb25UZXh0LFxuICAgICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhY3Rpb246IGtlZXBBY3Rpb24sXG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0VmFsdWVzLmtlZXBBY3Rpb25UZXh0LFxuICAgICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAnbGluaycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdHlwZTogU2t5Q29uZmlybVR5cGUuQ3VzdG9tLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jbG9zZWQuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChhcmdzLmFjdGlvbiA9PT0gZGlzY2FyZEFjdGlvbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIuY2xvc2VNb2RhbCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXIuY2xvc2VNb2RhbCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|