@skyux/modals 5.0.5 → 5.5.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/README.md +6 -4
- package/documentation.json +53 -8
- package/esm2015/index.js +26 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-button-action.js +2 -0
- package/esm2015/lib/modules/confirm/confirm-button-action.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-button-config.js +2 -0
- package/esm2015/lib/modules/confirm/confirm-button-config.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-button.js +2 -0
- package/esm2015/lib/modules/confirm/confirm-button.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-closed-event-args.js +2 -0
- package/esm2015/lib/modules/confirm/confirm-closed-event-args.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-config.js +2 -0
- package/esm2015/lib/modules/confirm/confirm-config.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-instance.js +12 -0
- package/esm2015/lib/modules/confirm/confirm-instance.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-modal-context.js +4 -0
- package/esm2015/lib/modules/confirm/confirm-modal-context.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm-type.js +25 -0
- package/esm2015/lib/modules/confirm/confirm-type.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm.component.js +127 -0
- package/esm2015/lib/modules/confirm/confirm.component.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm.module.js +35 -0
- package/esm2015/lib/modules/confirm/confirm.module.js.map +1 -0
- package/esm2015/lib/modules/confirm/confirm.service.js +55 -0
- package/esm2015/lib/modules/confirm/confirm.service.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-adapter.service.js +47 -0
- package/esm2015/lib/modules/modal/modal-adapter.service.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-before-close-handler.js +7 -0
- package/esm2015/lib/modules/modal/modal-before-close-handler.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-close-args.js +4 -0
- package/esm2015/lib/modules/modal/modal-close-args.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-component-adapter.service.js +98 -0
- package/esm2015/lib/modules/modal/modal-component-adapter.service.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-configuration.js +20 -0
- package/esm2015/lib/modules/modal/modal-configuration.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-content.component.js +19 -0
- package/esm2015/lib/modules/modal/modal-content.component.js.map +1 -0
- package/esm2015/{modules → lib/modules}/modal/modal-footer.component.js +1 -1
- package/esm2015/lib/modules/modal/modal-footer.component.js.map +1 -0
- package/esm2015/{modules → lib/modules}/modal/modal-header.component.js +1 -1
- package/esm2015/lib/modules/modal/modal-header.component.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-host.component.js +101 -0
- package/esm2015/lib/modules/modal/modal-host.component.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-host.service.js +55 -0
- package/esm2015/lib/modules/modal/modal-host.service.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-instance.js +105 -0
- package/esm2015/lib/modules/modal/modal-instance.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-scroll-shadow-event-args.js +2 -0
- package/esm2015/lib/modules/modal/modal-scroll-shadow-event-args.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-scroll-shadow.directive.js +122 -0
- package/esm2015/lib/modules/modal/modal-scroll-shadow.directive.js.map +1 -0
- package/esm2015/lib/modules/modal/modal-state-animation.js +8 -0
- package/esm2015/lib/modules/modal/modal-state-animation.js.map +1 -0
- package/esm2015/lib/modules/modal/modal.component.js +184 -0
- package/esm2015/lib/modules/modal/modal.component.js.map +1 -0
- package/esm2015/lib/modules/modal/modal.interface.js +4 -0
- package/esm2015/lib/modules/modal/modal.interface.js.map +1 -0
- package/esm2015/lib/modules/modal/modal.module.js +64 -0
- package/esm2015/lib/modules/modal/modal.module.js.map +1 -0
- package/esm2015/lib/modules/modal/modal.service.js +85 -0
- package/esm2015/lib/modules/modal/modal.service.js.map +1 -0
- package/esm2015/lib/modules/shared/sky-modals-resources.module.js +54 -0
- package/esm2015/lib/modules/shared/sky-modals-resources.module.js.map +1 -0
- package/esm2015/skyux-modals.js +2 -2
- package/esm2015/skyux-modals.js.map +1 -0
- package/esm2015/testing/modal-fixture.js +1 -1
- package/esm2015/testing/modal-fixture.js.map +1 -0
- package/esm2015/testing/public-api.js +1 -1
- package/esm2015/testing/public-api.js.map +1 -0
- package/esm2015/testing/skyux-modals-testing.js +1 -1
- package/esm2015/testing/skyux-modals-testing.js.map +1 -0
- package/fesm2015/skyux-modals-testing.js.map +1 -1
- package/fesm2015/skyux-modals.js.map +1 -1
- package/index.d.ts +23 -0
- package/{modules → lib/modules}/confirm/confirm-button-action.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-button-config.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-button.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-closed-event-args.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-config.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-instance.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-modal-context.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm-type.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm.component.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm.module.d.ts +0 -0
- package/{modules → lib/modules}/confirm/confirm.service.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-before-close-handler.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-close-args.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-component-adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-configuration.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-content.component.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-footer.component.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-header.component.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-host.component.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-host.service.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-instance.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-scroll-shadow-event-args.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-scroll-shadow.directive.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal-state-animation.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal.component.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal.interface.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal.module.d.ts +0 -0
- package/{modules → lib/modules}/modal/modal.service.d.ts +0 -0
- package/{modules → lib/modules}/shared/sky-modals-resources.module.d.ts +0 -0
- package/package.json +18 -4
- package/skyux-modals.d.ts +1 -1
- package/LICENSE +0 -21
- package/esm2015/modules/confirm/confirm-button-action.js +0 -2
- package/esm2015/modules/confirm/confirm-button-config.js +0 -2
- package/esm2015/modules/confirm/confirm-button.js +0 -2
- package/esm2015/modules/confirm/confirm-closed-event-args.js +0 -2
- package/esm2015/modules/confirm/confirm-config.js +0 -2
- package/esm2015/modules/confirm/confirm-instance.js +0 -12
- package/esm2015/modules/confirm/confirm-modal-context.js +0 -4
- package/esm2015/modules/confirm/confirm-type.js +0 -25
- package/esm2015/modules/confirm/confirm.component.js +0 -124
- package/esm2015/modules/confirm/confirm.module.js +0 -35
- package/esm2015/modules/confirm/confirm.service.js +0 -54
- package/esm2015/modules/modal/modal-adapter.service.js +0 -46
- package/esm2015/modules/modal/modal-before-close-handler.js +0 -7
- package/esm2015/modules/modal/modal-close-args.js +0 -4
- package/esm2015/modules/modal/modal-component-adapter.service.js +0 -97
- package/esm2015/modules/modal/modal-configuration.js +0 -20
- package/esm2015/modules/modal/modal-content.component.js +0 -19
- package/esm2015/modules/modal/modal-host.component.js +0 -101
- package/esm2015/modules/modal/modal-host.service.js +0 -55
- package/esm2015/modules/modal/modal-instance.js +0 -105
- package/esm2015/modules/modal/modal-scroll-shadow-event-args.js +0 -2
- package/esm2015/modules/modal/modal-scroll-shadow.directive.js +0 -121
- package/esm2015/modules/modal/modal-state-animation.js +0 -8
- package/esm2015/modules/modal/modal.component.js +0 -183
- package/esm2015/modules/modal/modal.interface.js +0 -4
- package/esm2015/modules/modal/modal.module.js +0 -64
- package/esm2015/modules/modal/modal.service.js +0 -84
- package/esm2015/modules/shared/sky-modals-resources.module.js +0 -54
- package/esm2015/public-api.js +0 -26
- package/public-api.d.ts +0 -23
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SkyModalService } from '../modal/modal.service';
|
|
3
|
+
import { SkyConfirmModalContext } from './confirm-modal-context';
|
|
4
|
+
import { SkyConfirmComponent } from './confirm.component';
|
|
5
|
+
import { SkyConfirmInstance } from './confirm-instance';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../modal/modal.service";
|
|
8
|
+
/**
|
|
9
|
+
* The `SkyConfirmService` provider launches the confirmation dialog.
|
|
10
|
+
* Within the service, you can specify the dialog's message and customize the button text.
|
|
11
|
+
*/
|
|
12
|
+
export class SkyConfirmService {
|
|
13
|
+
constructor(modalService) {
|
|
14
|
+
this.modalService = modalService;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Opens a confirmation dialog and passes the `config` parameter of type `SkyConfirmConfig`
|
|
18
|
+
* to the component's constructor. This method returns an object of type `SkyConfirmInstance`.
|
|
19
|
+
*/
|
|
20
|
+
open(config) {
|
|
21
|
+
const modalInstance = this.modalService.open(SkyConfirmComponent, {
|
|
22
|
+
providers: [
|
|
23
|
+
{
|
|
24
|
+
provide: SkyConfirmModalContext,
|
|
25
|
+
useValue: config,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
});
|
|
29
|
+
const confirmInstance = new SkyConfirmInstance();
|
|
30
|
+
modalInstance.closed.subscribe((args) => {
|
|
31
|
+
let result = args.data;
|
|
32
|
+
// The modal was closed using the ESC key.
|
|
33
|
+
if (result === undefined) {
|
|
34
|
+
result = {
|
|
35
|
+
action: 'cancel',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
confirmInstance.closed.emit(result);
|
|
39
|
+
confirmInstance.closed.complete();
|
|
40
|
+
});
|
|
41
|
+
return confirmInstance;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
SkyConfirmService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyConfirmService, deps: [{ token: i1.SkyModalService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
+
SkyConfirmService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyConfirmService, providedIn: 'any' });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyConfirmService, decorators: [{
|
|
47
|
+
type: Injectable,
|
|
48
|
+
args: [{
|
|
49
|
+
// Must be 'any' so that the modal component is created in the context of its module's injector.
|
|
50
|
+
// If set to 'root', the component's dependency injections would only be derived from the root
|
|
51
|
+
// injector and may loose context if the modal was opened from within a lazy-loaded module.
|
|
52
|
+
providedIn: 'any',
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i1.SkyModalService }]; } });
|
|
55
|
+
//# sourceMappingURL=confirm.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/confirm/confirm.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;;;AAExD;;;GAGG;AAOH,MAAM,OAAO,iBAAiB;IAC5B,YAAoB,YAA6B;QAA7B,iBAAY,GAAZ,YAAY,CAAiB;IAAG,CAAC;IAErD;;;OAGG;IACI,IAAI,CAAC,MAAwB;QAClC,MAAM,aAAa,GAAqB,IAAI,CAAC,YAAY,CAAC,IAAI,CAC5D,mBAAmB,EACnB;YACE,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,QAAQ,EAAE,MAAM;iBACjB;aACF;SACF,CACF,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAEjD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAuB,EAAE,EAAE;YACzD,IAAI,MAAM,GAA6B,IAAI,CAAC,IAAI,CAAC;YAEjD,0CAA0C;YAC1C,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,MAAM,GAAG;oBACP,MAAM,EAAE,QAAQ;iBACjB,CAAC;aACH;YAED,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IACzB,CAAC;;+GArCU,iBAAiB;mHAAjB,iBAAiB,cAFhB,KAAK;4FAEN,iBAAiB;kBAN7B,UAAU;mBAAC;oBACV,gGAAgG;oBAChG,8FAA8F;oBAC9F,2FAA2F;oBAC3F,UAAU,EAAE,KAAK;iBAClB","sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SkyModalCloseArgs } from '../modal/modal-close-args';\n\nimport { SkyModalInstance } from '../modal/modal-instance';\n\nimport { SkyModalService } from '../modal/modal.service';\n\nimport { SkyConfirmCloseEventArgs } from './confirm-closed-event-args';\n\nimport { SkyConfirmConfig } from './confirm-config';\n\nimport { SkyConfirmModalContext } from './confirm-modal-context';\n\nimport { SkyConfirmComponent } from './confirm.component';\n\nimport { SkyConfirmInstance } from './confirm-instance';\n\n/**\n * The `SkyConfirmService` provider launches the confirmation dialog.\n * Within the service, you can specify the dialog's message and customize the button text.\n */\n@Injectable({\n // Must be 'any' so that the modal component is created in the context of its module's injector.\n // If set to 'root', the component's dependency injections would only be derived from the root\n // injector and may loose context if the modal was opened from within a lazy-loaded module.\n providedIn: 'any',\n})\nexport class SkyConfirmService {\n constructor(private modalService: SkyModalService) {}\n\n /**\n * Opens a confirmation dialog and passes the `config` parameter of type `SkyConfirmConfig`\n * to the component's constructor. This method returns an object of type `SkyConfirmInstance`.\n */\n public open(config: SkyConfirmConfig): SkyConfirmInstance {\n const modalInstance: SkyModalInstance = this.modalService.open(\n SkyConfirmComponent,\n {\n providers: [\n {\n provide: SkyConfirmModalContext,\n useValue: config,\n },\n ],\n }\n );\n\n const confirmInstance = new SkyConfirmInstance();\n\n modalInstance.closed.subscribe((args: SkyModalCloseArgs) => {\n let result: SkyConfirmCloseEventArgs = args.data;\n\n // The modal was closed using the ESC key.\n if (result === undefined) {\n result = {\n action: 'cancel',\n };\n }\n\n confirmInstance.closed.emit(result);\n confirmInstance.closed.complete();\n });\n\n return confirmInstance;\n }\n}\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SkyAppWindowRef } from '@skyux/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@skyux/core";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export class SkyModalAdapterService {
|
|
9
|
+
constructor(windowRef) {
|
|
10
|
+
this.windowRef = windowRef;
|
|
11
|
+
this.docRef = this.windowRef.nativeWindow.document;
|
|
12
|
+
this.bodyEl = this.windowRef.nativeWindow.document.body;
|
|
13
|
+
}
|
|
14
|
+
toggleFullPageModalClass(isAddFull) {
|
|
15
|
+
if (isAddFull) {
|
|
16
|
+
this.addClassToBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.removeClassFromBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
setPageScroll(isAdd) {
|
|
23
|
+
if (isAdd) {
|
|
24
|
+
this.addClassToBody(SkyModalAdapterService.MODAL_BODY_CLASS);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.removeClassFromBody(SkyModalAdapterService.MODAL_BODY_CLASS);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
getModalOpener() {
|
|
31
|
+
return this.docRef.activeElement;
|
|
32
|
+
}
|
|
33
|
+
addClassToBody(className) {
|
|
34
|
+
this.bodyEl.classList.add(className);
|
|
35
|
+
}
|
|
36
|
+
removeClassFromBody(className) {
|
|
37
|
+
this.bodyEl.classList.remove(className);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
SkyModalAdapterService.MODAL_BODY_FULL_CLASS = 'sky-modal-body-full-page';
|
|
41
|
+
SkyModalAdapterService.MODAL_BODY_CLASS = 'sky-modal-body-open';
|
|
42
|
+
SkyModalAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalAdapterService, deps: [{ token: i1.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
SkyModalAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalAdapterService });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalAdapterService, decorators: [{
|
|
45
|
+
type: Injectable
|
|
46
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAppWindowRef }]; } });
|
|
47
|
+
//# sourceMappingURL=modal-adapter.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-adapter.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-adapter.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;;;AAE9C;;GAEG;AAEH,MAAM,OAAO,sBAAsB;IAOjC,YAAoB,SAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1D,CAAC;IAEM,wBAAwB,CAAC,SAAkB;QAChD,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;SACnE;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;SACxE;IACH,CAAC;IAEM,aAAa,CAAC,KAAc;QACjC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;SAC9D;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;SACnE;IACH,CAAC;IAEM,cAAc;QACnB,OAAoB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IAChD,CAAC;IAEO,cAAc,CAAC,SAAiB;QACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,mBAAmB,CAAC,SAAiB;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;;AArCuB,4CAAqB,GAAG,0BAA0B,CAAC;AACnD,uCAAgB,GAAG,qBAAqB,CAAC;oHAFtD,sBAAsB;wHAAtB,sBAAsB;4FAAtB,sBAAsB;kBADlC,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SkyAppWindowRef } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalAdapterService {\n private static readonly MODAL_BODY_FULL_CLASS = 'sky-modal-body-full-page';\n private static readonly MODAL_BODY_CLASS = 'sky-modal-body-open';\n\n private docRef: any;\n private bodyEl: HTMLElement;\n\n constructor(private windowRef: SkyAppWindowRef) {\n this.docRef = this.windowRef.nativeWindow.document;\n this.bodyEl = this.windowRef.nativeWindow.document.body;\n }\n\n public toggleFullPageModalClass(isAddFull: boolean): void {\n if (isAddFull) {\n this.addClassToBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);\n } else {\n this.removeClassFromBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);\n }\n }\n\n public setPageScroll(isAdd: boolean): void {\n if (isAdd) {\n this.addClassToBody(SkyModalAdapterService.MODAL_BODY_CLASS);\n } else {\n this.removeClassFromBody(SkyModalAdapterService.MODAL_BODY_CLASS);\n }\n }\n\n public getModalOpener(): HTMLElement {\n return <HTMLElement>this.docRef.activeElement;\n }\n\n private addClassToBody(className: string): void {\n this.bodyEl.classList.add(className);\n }\n\n private removeClassFromBody(className: string): void {\n this.bodyEl.classList.remove(className);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-before-close-handler.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-before-close-handler.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,0BAA0B;IACrC,YACkB,UAAoB,EACpB,SAA4B;QAD5B,eAAU,GAAV,UAAU,CAAU;QACpB,cAAS,GAAT,SAAS,CAAmB;IAC3C,CAAC;CACL","sourcesContent":["import { SkyModalCloseArgs } from './modal-close-args';\n\nexport class SkyModalBeforeCloseHandler {\n constructor(\n public readonly closeModal: Function,\n public readonly closeArgs: SkyModalCloseArgs\n ) {}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-close-args.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-close-args.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IAG5B,gBAAe,CAAC;CACjB","sourcesContent":["export class SkyModalCloseArgs {\n public reason: string;\n public data: any;\n constructor() {}\n}\n"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SkyCoreAdapterService } from '@skyux/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@skyux/core";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export class SkyModalComponentAdapterService {
|
|
9
|
+
constructor(coreAdapter) {
|
|
10
|
+
this.coreAdapter = coreAdapter;
|
|
11
|
+
}
|
|
12
|
+
handleWindowChange(modalEl) {
|
|
13
|
+
let boundedHeightEl = modalEl.nativeElement.querySelector('.sky-modal');
|
|
14
|
+
let fullPageModalEl = modalEl.nativeElement.querySelector('.sky-modal-full-page');
|
|
15
|
+
/*
|
|
16
|
+
Set modal height equal to max height of window (accounting for padding above and below modal)
|
|
17
|
+
*/
|
|
18
|
+
let newHeight = window.innerHeight - 40;
|
|
19
|
+
boundedHeightEl.style.maxHeight = newHeight.toString() + 'px';
|
|
20
|
+
if (fullPageModalEl) {
|
|
21
|
+
this.setFullPageHeight(fullPageModalEl);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
/*
|
|
25
|
+
IE11 doesn't handle flex and max-height correctly so we have to explicitly add
|
|
26
|
+
max-height to the content that accounts for standard header and footer height.
|
|
27
|
+
*/
|
|
28
|
+
let modalContentEl = modalEl.nativeElement.querySelector('.sky-modal-content');
|
|
29
|
+
let contentHeight = newHeight - 114;
|
|
30
|
+
modalContentEl.style.maxHeight = contentHeight.toString() + 'px';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
isFocusInFirstItem(event, list) {
|
|
34
|
+
/* istanbul ignore next */
|
|
35
|
+
/* sanity check */
|
|
36
|
+
let eventTarget = event.target || event.srcElement;
|
|
37
|
+
return list.length > 0 && eventTarget === list[0];
|
|
38
|
+
}
|
|
39
|
+
isFocusInLastItem(event, list) {
|
|
40
|
+
/* istanbul ignore next */
|
|
41
|
+
/* sanity check */
|
|
42
|
+
let eventTarget = event.target || event.srcElement;
|
|
43
|
+
return list.length > 0 && eventTarget === list[list.length - 1];
|
|
44
|
+
}
|
|
45
|
+
isModalFocused(event, modalEl) {
|
|
46
|
+
/* istanbul ignore next */
|
|
47
|
+
/* sanity check */
|
|
48
|
+
let eventTarget = event.target || event.srcElement;
|
|
49
|
+
return (modalEl &&
|
|
50
|
+
eventTarget === modalEl.nativeElement.querySelector('.sky-modal-dialog'));
|
|
51
|
+
}
|
|
52
|
+
focusLastElement(list) {
|
|
53
|
+
if (list.length > 0) {
|
|
54
|
+
list[list.length - 1].focus();
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
focusFirstElement(list) {
|
|
60
|
+
if (list.length > 0) {
|
|
61
|
+
list[0].focus();
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
modalOpened(modalEl) {
|
|
67
|
+
/* istanbul ignore else */
|
|
68
|
+
/* handle the case where somehow there is a focused element already in the modal */
|
|
69
|
+
if (!(document.activeElement &&
|
|
70
|
+
modalEl.nativeElement.contains(document.activeElement))) {
|
|
71
|
+
let currentScrollX = window.pageXOffset;
|
|
72
|
+
let currentScrollY = window.pageYOffset;
|
|
73
|
+
let inputWithAutofocus = modalEl.nativeElement.querySelector('[autofocus]');
|
|
74
|
+
if (inputWithAutofocus) {
|
|
75
|
+
inputWithAutofocus.focus();
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.coreAdapter.getFocusableChildrenAndApplyFocus(modalEl, '.sky-modal-content', true);
|
|
79
|
+
}
|
|
80
|
+
window.scrollTo(currentScrollX, currentScrollY);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
setFullPageHeight(fullPageModalEl) {
|
|
84
|
+
const windowHeight = window.innerHeight;
|
|
85
|
+
const fullPageModalStyle = getComputedStyle(fullPageModalEl);
|
|
86
|
+
const marginTopBottom = parseInt(fullPageModalStyle.marginTop, 10) +
|
|
87
|
+
parseInt(fullPageModalStyle.marginBottom, 10);
|
|
88
|
+
const fullPageModalHeight = windowHeight - marginTopBottom + 'px';
|
|
89
|
+
fullPageModalEl.style.height = fullPageModalHeight;
|
|
90
|
+
fullPageModalEl.style.maxHeight = fullPageModalHeight;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
SkyModalComponentAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalComponentAdapterService, deps: [{ token: i1.SkyCoreAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
94
|
+
SkyModalComponentAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalComponentAdapterService });
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalComponentAdapterService, decorators: [{
|
|
96
|
+
type: Injectable
|
|
97
|
+
}], ctorParameters: function () { return [{ type: i1.SkyCoreAdapterService }]; } });
|
|
98
|
+
//# sourceMappingURL=modal-component-adapter.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-component-adapter.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-component-adapter.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, ElementRef } from '@angular/core';\n\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalComponentAdapterService {\n constructor(private coreAdapter: SkyCoreAdapterService) {}\n\n public handleWindowChange(modalEl: ElementRef): void {\n let boundedHeightEl = modalEl.nativeElement.querySelector('.sky-modal');\n let fullPageModalEl = modalEl.nativeElement.querySelector(\n '.sky-modal-full-page'\n );\n /*\n Set modal height equal to max height of window (accounting for padding above and below modal)\n */\n let newHeight = window.innerHeight - 40;\n\n boundedHeightEl.style.maxHeight = newHeight.toString() + 'px';\n if (fullPageModalEl) {\n this.setFullPageHeight(fullPageModalEl);\n } else {\n /*\n IE11 doesn't handle flex and max-height correctly so we have to explicitly add\n max-height to the content that accounts for standard header and footer height.\n */\n let modalContentEl =\n modalEl.nativeElement.querySelector('.sky-modal-content');\n let contentHeight = newHeight - 114;\n modalContentEl.style.maxHeight = contentHeight.toString() + 'px';\n }\n }\n\n public isFocusInFirstItem(\n event: KeyboardEvent,\n list: Array<HTMLElement>\n ): boolean {\n /* istanbul ignore next */\n /* sanity check */\n let eventTarget = event.target || event.srcElement;\n return list.length > 0 && eventTarget === list[0];\n }\n\n public isFocusInLastItem(\n event: KeyboardEvent,\n list: Array<HTMLElement>\n ): boolean {\n /* istanbul ignore next */\n /* sanity check */\n let eventTarget = event.target || event.srcElement;\n return list.length > 0 && eventTarget === list[list.length - 1];\n }\n\n public isModalFocused(event: KeyboardEvent, modalEl: ElementRef): boolean {\n /* istanbul ignore next */\n /* sanity check */\n let eventTarget = event.target || event.srcElement;\n return (\n modalEl &&\n eventTarget === modalEl.nativeElement.querySelector('.sky-modal-dialog')\n );\n }\n\n public focusLastElement(list: Array<HTMLElement>): boolean {\n if (list.length > 0) {\n list[list.length - 1].focus();\n return true;\n }\n return false;\n }\n\n public focusFirstElement(list: Array<HTMLElement>): boolean {\n if (list.length > 0) {\n list[0].focus();\n return true;\n }\n return false;\n }\n\n public modalOpened(modalEl: ElementRef): void {\n /* istanbul ignore else */\n /* handle the case where somehow there is a focused element already in the modal */\n if (\n !(\n document.activeElement &&\n modalEl.nativeElement.contains(document.activeElement)\n )\n ) {\n let currentScrollX = window.pageXOffset;\n let currentScrollY = window.pageYOffset;\n\n let inputWithAutofocus =\n modalEl.nativeElement.querySelector('[autofocus]');\n\n if (inputWithAutofocus) {\n inputWithAutofocus.focus();\n } else {\n this.coreAdapter.getFocusableChildrenAndApplyFocus(\n modalEl,\n '.sky-modal-content',\n true\n );\n }\n window.scrollTo(currentScrollX, currentScrollY);\n }\n }\n\n private setFullPageHeight(fullPageModalEl: HTMLElement): void {\n const windowHeight = window.innerHeight;\n const fullPageModalStyle = getComputedStyle(fullPageModalEl);\n\n const marginTopBottom =\n parseInt(fullPageModalStyle.marginTop, 10) +\n parseInt(fullPageModalStyle.marginBottom, 10);\n\n const fullPageModalHeight = windowHeight - marginTopBottom + 'px';\n\n fullPageModalEl.style.height = fullPageModalHeight;\n fullPageModalEl.style.maxHeight = fullPageModalHeight;\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export class SkyModalConfiguration {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.fullPage = this.fullPage;
|
|
9
|
+
this.size = 'medium';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
SkyModalConfiguration.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalConfiguration, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
SkyModalConfiguration.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalConfiguration, providedIn: 'any' });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalConfiguration, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{
|
|
17
|
+
providedIn: 'any',
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
|
+
//# sourceMappingURL=modal-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-configuration.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAE3C;;GAEG;AAIH,MAAM,OAAO,qBAAqB;IAUhC;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,CAAC;;mHAbU,qBAAqB;uHAArB,qBAAqB,cAFpB,KAAK;4FAEN,qBAAqB;kBAHjC,UAAU;mBAAC;oBACV,UAAU,EAAE,KAAK;iBAClB","sourcesContent":["import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyModalConfiguration {\n public fullPage?: boolean;\n public size?: string;\n public ariaDescribedBy?: string;\n public ariaLabelledBy?: string;\n public ariaRole?: string;\n public tiledBody?: boolean;\n public helpKey?: string;\n public wrapperClass?: string;\n\n constructor() {\n this.fullPage = this.fullPage;\n this.size = 'medium';\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Specifies content to display in the modal's body.
|
|
5
|
+
*/
|
|
6
|
+
export class SkyModalContentComponent {
|
|
7
|
+
}
|
|
8
|
+
SkyModalContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
SkyModalContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyModalContentComponent, selector: "sky-modal-content", ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["sky-modal-content{display:block;min-height:100%}.sky-theme-modern sky-modal-content{padding:10px 30px 30px}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalContentComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'sky-modal-content',
|
|
14
|
+
templateUrl: './modal-content.component.html',
|
|
15
|
+
styleUrls: ['./modal-content.component.scss'],
|
|
16
|
+
encapsulation: ViewEncapsulation.None,
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=modal-content.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-content.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-content.component.ts","../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-content.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;;AAE7D;;GAEG;AAOH,MAAM,OAAO,wBAAwB;;sHAAxB,wBAAwB;0GAAxB,wBAAwB,yDCXrC,6BACA;4FDUa,wBAAwB;kBANpC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,WAAW,EAAE,gCAAgC;oBAC7C,SAAS,EAAE,CAAC,gCAAgC,CAAC;oBAC7C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC","sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Specifies content to display in the modal's body.\n */\n@Component({\n selector: 'sky-modal-content',\n templateUrl: './modal-content.component.html',\n styleUrls: ['./modal-content.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyModalContentComponent {}\n","<ng-content></ng-content>\n"]}
|
|
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
15
15
|
styleUrls: ['./modal-footer.component.scss'],
|
|
16
16
|
}]
|
|
17
17
|
}] });
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=modal-footer.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-footer.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-footer.component.ts","../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-footer.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;AAE1C;;GAEG;AAMH,MAAM,OAAO,uBAAuB;;qHAAvB,uBAAuB;yGAAvB,uBAAuB,wDCVpC,0GAGA;4FDOa,uBAAuB;kBALnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,WAAW,EAAE,+BAA+B;oBAC5C,SAAS,EAAE,CAAC,+BAA+B,CAAC;iBAC7C","sourcesContent":["import { Component } from '@angular/core';\n\n/**\n * Specifies content to display in the modal's footer.\n */\n@Component({\n selector: 'sky-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n})\nexport class SkyModalFooterComponent {}\n","<div class=\"sky-modal-footer-container sky-padding-even-large\">\n <ng-content></ng-content>\n</div>\n"]}
|
|
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
16
16
|
styleUrls: ['./modal-header.component.scss'],
|
|
17
17
|
}]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=modal-header.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-header.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-header.component.ts","../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-header.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;;AAE1C;;GAEG;AAMH,MAAM,OAAO,uBAAuB;;qHAAvB,uBAAuB;yGAAvB,uBAAuB,wDCVpC,4IAQA;4FDEa,uBAAuB;kBALnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,WAAW,EAAE,+BAA+B;oBAC5C,SAAS,EAAE,CAAC,+BAA+B,CAAC;iBAC7C","sourcesContent":["import { Component } from '@angular/core';\n\n/**\n * Specifies a header for the modal.\n */\n@Component({\n selector: 'sky-modal-header',\n templateUrl: './modal-header.component.html',\n styleUrls: ['./modal-header.component.scss'],\n})\nexport class SkyModalHeaderComponent {}\n","<h1\n class=\"sky-emphasized\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n>\n <ng-content></ng-content>\n</h1>\n"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, ComponentFactoryResolver, Injector, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import { NavigationStart, Router } from '@angular/router';
|
|
3
|
+
import { takeWhile } from 'rxjs/operators';
|
|
4
|
+
import { SkyModalAdapterService } from './modal-adapter.service';
|
|
5
|
+
import { SkyModalHostService } from './modal-host.service';
|
|
6
|
+
import { SkyModalConfiguration } from './modal-configuration';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./modal-adapter.service";
|
|
9
|
+
import * as i2 from "@angular/router";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export class SkyModalHostComponent {
|
|
15
|
+
constructor(resolver, adapter, injector, router, changeDetector) {
|
|
16
|
+
this.resolver = resolver;
|
|
17
|
+
this.adapter = adapter;
|
|
18
|
+
this.injector = injector;
|
|
19
|
+
this.router = router;
|
|
20
|
+
this.changeDetector = changeDetector;
|
|
21
|
+
}
|
|
22
|
+
get modalOpen() {
|
|
23
|
+
return SkyModalHostService.openModalCount > 0;
|
|
24
|
+
}
|
|
25
|
+
get backdropZIndex() {
|
|
26
|
+
return SkyModalHostService.backdropZIndex;
|
|
27
|
+
}
|
|
28
|
+
open(modalInstance, component, config) {
|
|
29
|
+
const params = Object.assign({}, config);
|
|
30
|
+
const factory = this.resolver.resolveComponentFactory(component);
|
|
31
|
+
const hostService = new SkyModalHostService();
|
|
32
|
+
hostService.fullPage = !!params.fullPage;
|
|
33
|
+
const adapter = this.adapter;
|
|
34
|
+
const modalOpener = adapter.getModalOpener();
|
|
35
|
+
let isOpen = true;
|
|
36
|
+
params.providers.push({
|
|
37
|
+
provide: SkyModalHostService,
|
|
38
|
+
useValue: hostService,
|
|
39
|
+
});
|
|
40
|
+
params.providers.push({
|
|
41
|
+
provide: SkyModalConfiguration,
|
|
42
|
+
useValue: params,
|
|
43
|
+
});
|
|
44
|
+
adapter.setPageScroll(SkyModalHostService.openModalCount > 0);
|
|
45
|
+
adapter.toggleFullPageModalClass(SkyModalHostService.fullPageModalCount > 0);
|
|
46
|
+
let providers = params.providers || /* istanbul ignore next */ [];
|
|
47
|
+
const injector = Injector.create({
|
|
48
|
+
providers,
|
|
49
|
+
parent: this.injector,
|
|
50
|
+
});
|
|
51
|
+
let modalComponentRef = this.target.createComponent(factory, undefined, injector);
|
|
52
|
+
modalInstance.componentInstance = modalComponentRef.instance;
|
|
53
|
+
function closeModal() {
|
|
54
|
+
hostService.destroy();
|
|
55
|
+
adapter.setPageScroll(SkyModalHostService.openModalCount > 0);
|
|
56
|
+
adapter.toggleFullPageModalClass(SkyModalHostService.fullPageModalCount > 0);
|
|
57
|
+
/* istanbul ignore else */
|
|
58
|
+
/* sanity check */
|
|
59
|
+
if (modalOpener && modalOpener.focus) {
|
|
60
|
+
modalOpener.focus();
|
|
61
|
+
}
|
|
62
|
+
modalComponentRef.destroy();
|
|
63
|
+
}
|
|
64
|
+
hostService.openHelp.subscribe((helpKey) => {
|
|
65
|
+
modalInstance.openHelp(helpKey);
|
|
66
|
+
});
|
|
67
|
+
hostService.close.subscribe(() => {
|
|
68
|
+
modalInstance.close();
|
|
69
|
+
});
|
|
70
|
+
this.router.events.pipe(takeWhile(() => isOpen)).subscribe((event) => {
|
|
71
|
+
/* istanbul ignore else */
|
|
72
|
+
if (event instanceof NavigationStart) {
|
|
73
|
+
modalInstance.close();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
modalInstance.closed.subscribe(() => {
|
|
77
|
+
isOpen = false;
|
|
78
|
+
closeModal();
|
|
79
|
+
});
|
|
80
|
+
// Necessary if the host was created via a consumer's lifecycle hook such as ngOnInit
|
|
81
|
+
this.changeDetector.detectChanges();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
SkyModalHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.SkyModalAdapterService }, { token: i0.Injector }, { token: i2.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
+
SkyModalHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], viewProviders: [SkyModalAdapterService] });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalHostComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{
|
|
89
|
+
selector: 'sky-modal-host',
|
|
90
|
+
templateUrl: './modal-host.component.html',
|
|
91
|
+
styleUrls: ['./modal-host.component.scss'],
|
|
92
|
+
viewProviders: [SkyModalAdapterService],
|
|
93
|
+
}]
|
|
94
|
+
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.SkyModalAdapterService }, { type: i0.Injector }, { type: i2.Router }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { target: [{
|
|
95
|
+
type: ViewChild,
|
|
96
|
+
args: ['target', {
|
|
97
|
+
read: ViewContainerRef,
|
|
98
|
+
static: true,
|
|
99
|
+
}]
|
|
100
|
+
}] } });
|
|
101
|
+
//# sourceMappingURL=modal-host.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-host.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-host.component.ts","../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-host.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n Injector,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { NavigationStart, Router } from '@angular/router';\n\nimport { takeWhile } from 'rxjs/operators';\n\nimport { SkyModalAdapterService } from './modal-adapter.service';\n\nimport { SkyModalInstance } from './modal-instance';\n\nimport { SkyModalHostService } from './modal-host.service';\n\nimport { SkyModalConfigurationInterface } from './modal.interface';\n\nimport { SkyModalConfiguration } from './modal-configuration';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-modal-host',\n templateUrl: './modal-host.component.html',\n styleUrls: ['./modal-host.component.scss'],\n viewProviders: [SkyModalAdapterService],\n})\nexport class SkyModalHostComponent {\n public get modalOpen() {\n return SkyModalHostService.openModalCount > 0;\n }\n\n public get backdropZIndex() {\n return SkyModalHostService.backdropZIndex;\n }\n\n /**\n * Use `any` for backwards-compatibility with Angular 4-7.\n * See: https://github.com/angular/angular/issues/30654\n * TODO: Remove the `any` in a breaking change.\n * @internal\n */\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n } as any)\n public target: ViewContainerRef;\n\n constructor(\n private resolver: ComponentFactoryResolver,\n private adapter: SkyModalAdapterService,\n private injector: Injector,\n private router: Router,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n public open(\n modalInstance: SkyModalInstance,\n component: any,\n config?: SkyModalConfigurationInterface\n ) {\n const params: SkyModalConfigurationInterface = Object.assign({}, config);\n const factory = this.resolver.resolveComponentFactory(component);\n\n const hostService = new SkyModalHostService();\n hostService.fullPage = !!params.fullPage;\n\n const adapter = this.adapter;\n const modalOpener: HTMLElement = adapter.getModalOpener();\n\n let isOpen = true;\n\n params.providers.push({\n provide: SkyModalHostService,\n useValue: hostService,\n });\n params.providers.push({\n provide: SkyModalConfiguration,\n useValue: params,\n });\n\n adapter.setPageScroll(SkyModalHostService.openModalCount > 0);\n adapter.toggleFullPageModalClass(\n SkyModalHostService.fullPageModalCount > 0\n );\n\n let providers = params.providers || /* istanbul ignore next */ [];\n const injector = Injector.create({\n providers,\n parent: this.injector,\n });\n\n let modalComponentRef = this.target.createComponent(\n factory,\n undefined,\n injector\n );\n\n modalInstance.componentInstance = modalComponentRef.instance;\n\n function closeModal() {\n hostService.destroy();\n adapter.setPageScroll(SkyModalHostService.openModalCount > 0);\n adapter.toggleFullPageModalClass(\n SkyModalHostService.fullPageModalCount > 0\n );\n /* istanbul ignore else */\n /* sanity check */\n if (modalOpener && modalOpener.focus) {\n modalOpener.focus();\n }\n modalComponentRef.destroy();\n }\n\n hostService.openHelp.subscribe((helpKey?: string) => {\n modalInstance.openHelp(helpKey);\n });\n\n hostService.close.subscribe(() => {\n modalInstance.close();\n });\n\n this.router.events.pipe(takeWhile(() => isOpen)).subscribe((event) => {\n /* istanbul ignore else */\n if (event instanceof NavigationStart) {\n modalInstance.close();\n }\n });\n\n modalInstance.closed.subscribe(() => {\n isOpen = false;\n closeModal();\n });\n\n // Necessary if the host was created via a consumer's lifecycle hook such as ngOnInit\n this.changeDetector.detectChanges();\n }\n}\n","<div\n class=\"sky-modal-host-backdrop\"\n [hidden]=\"!modalOpen\"\n [ngStyle]=\"{\n zIndex: backdropZIndex\n }\"\n></div>\n<div #target></div>\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
* @dynamic
|
|
6
|
+
*/
|
|
7
|
+
export class SkyModalHostService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.close = new EventEmitter();
|
|
10
|
+
this.fullPage = false;
|
|
11
|
+
this.openHelp = new EventEmitter();
|
|
12
|
+
SkyModalHostService.modalHosts.push(this);
|
|
13
|
+
}
|
|
14
|
+
static get openModalCount() {
|
|
15
|
+
return SkyModalHostService.modalHosts.length;
|
|
16
|
+
}
|
|
17
|
+
static get fullPageModalCount() {
|
|
18
|
+
let fullPageModals = SkyModalHostService.modalHosts.filter((modal) => modal.fullPage);
|
|
19
|
+
return fullPageModals.length;
|
|
20
|
+
}
|
|
21
|
+
static get BASE_Z_INDEX() {
|
|
22
|
+
return 1040;
|
|
23
|
+
}
|
|
24
|
+
static get backdropZIndex() {
|
|
25
|
+
return (SkyModalHostService.BASE_Z_INDEX +
|
|
26
|
+
SkyModalHostService.modalHosts.length * 10);
|
|
27
|
+
}
|
|
28
|
+
static get topModal() {
|
|
29
|
+
return SkyModalHostService.modalHosts[SkyModalHostService.modalHosts.length - 1];
|
|
30
|
+
}
|
|
31
|
+
getModalZIndex() {
|
|
32
|
+
let zIndex = SkyModalHostService.BASE_Z_INDEX + 1;
|
|
33
|
+
zIndex += (SkyModalHostService.modalHosts.indexOf(this) + 1) * 10;
|
|
34
|
+
return zIndex;
|
|
35
|
+
}
|
|
36
|
+
onClose() {
|
|
37
|
+
this.close.emit();
|
|
38
|
+
}
|
|
39
|
+
onOpenHelp(helpKey) {
|
|
40
|
+
this.openHelp.emit(helpKey);
|
|
41
|
+
}
|
|
42
|
+
destroy() {
|
|
43
|
+
SkyModalHostService.modalHosts.splice(SkyModalHostService.modalHosts.indexOf(this), 1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
SkyModalHostService.modalHosts = [];
|
|
47
|
+
SkyModalHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
SkyModalHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalHostService, providedIn: 'root' });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyModalHostService, decorators: [{
|
|
50
|
+
type: Injectable,
|
|
51
|
+
args: [{
|
|
52
|
+
providedIn: 'root',
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: function () { return []; } });
|
|
55
|
+
//# sourceMappingURL=modal-host.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-host.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/modals/src/lib/modules/modal/modal-host.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAEzD;;;GAGG;AAIH,MAAM,OAAO,mBAAmB;IAmC9B;QAJO,UAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;QACjC,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,IAAI,YAAY,EAAO,CAAC;QAGxC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IApCM,MAAM,KAAK,cAAc;QAC9B,OAAO,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/C,CAAC;IAEM,MAAM,KAAK,kBAAkB;QAClC,IAAI,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,MAAM,CACxD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC1B,CAAC;QACF,OAAO,cAAc,CAAC,MAAM,CAAC;IAC/B,CAAC;IAEO,MAAM,KAAK,YAAY;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,KAAK,cAAc;QAC9B,OAAO,CACL,mBAAmB,CAAC,YAAY;YAChC,mBAAmB,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAC3C,CAAC;IACJ,CAAC;IAEM,MAAM,KAAK,QAAQ;QACxB,OAAO,mBAAmB,CAAC,UAAU,CACnC,mBAAmB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAC1C,CAAC;IACJ,CAAC;IAYM,cAAc;QACnB,IAAI,MAAM,GAAG,mBAAmB,CAAC,YAAY,GAAG,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEM,UAAU,CAAC,OAAgB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO;QACZ,mBAAmB,CAAC,UAAU,CAAC,MAAM,CACnC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5C,CAAC,CACF,CAAC;IACJ,CAAC;;AA7Bc,8BAAU,GAA0B,EAAE,CAAC;iHA7B3C,mBAAmB;qHAAnB,mBAAmB,cAFlB,MAAM;4FAEP,mBAAmB;kBAH/B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\n\n/**\n * @internal\n * @dynamic\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyModalHostService {\n public static get openModalCount(): number {\n return SkyModalHostService.modalHosts.length;\n }\n\n public static get fullPageModalCount(): number {\n let fullPageModals = SkyModalHostService.modalHosts.filter(\n (modal) => modal.fullPage\n );\n return fullPageModals.length;\n }\n\n private static get BASE_Z_INDEX(): number {\n return 1040;\n }\n\n public static get backdropZIndex(): number {\n return (\n SkyModalHostService.BASE_Z_INDEX +\n SkyModalHostService.modalHosts.length * 10\n );\n }\n\n public static get topModal(): SkyModalHostService {\n return SkyModalHostService.modalHosts[\n SkyModalHostService.modalHosts.length - 1\n ];\n }\n\n private static modalHosts: SkyModalHostService[] = [];\n\n public close = new EventEmitter<void>();\n public fullPage = false;\n public openHelp = new EventEmitter<any>();\n\n constructor() {\n SkyModalHostService.modalHosts.push(this);\n }\n\n public getModalZIndex(): number {\n let zIndex = SkyModalHostService.BASE_Z_INDEX + 1;\n zIndex += (SkyModalHostService.modalHosts.indexOf(this) + 1) * 10;\n return zIndex;\n }\n\n public onClose(): void {\n this.close.emit();\n }\n\n public onOpenHelp(helpKey?: string) {\n this.openHelp.emit(helpKey);\n }\n\n public destroy(): void {\n SkyModalHostService.modalHosts.splice(\n SkyModalHostService.modalHosts.indexOf(this),\n 1\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { SkyModalCloseArgs } from './modal-close-args';
|
|
3
|
+
import { SkyModalBeforeCloseHandler } from './modal-before-close-handler';
|
|
4
|
+
// TODO: this class won't show in the generated docs until this work is done:
|
|
5
|
+
// https://github.com/blackbaud/skyux-docs-tools/issues/30
|
|
6
|
+
/**
|
|
7
|
+
* Allows you to close the modal and return data from the launched modal.
|
|
8
|
+
*/
|
|
9
|
+
export class SkyModalInstance {
|
|
10
|
+
constructor() {
|
|
11
|
+
this._beforeClose = new Subject();
|
|
12
|
+
this._closed = new Subject();
|
|
13
|
+
this._helpOpened = new Subject();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* An event that the modal instance emits when it is about to close.
|
|
17
|
+
* It emits a `SkyModalBeforeCloseHandler` object with a `closeModal` method
|
|
18
|
+
* that closes the modal. If a subscription exists for this event,
|
|
19
|
+
* the modal does not close until the subscriber calls the `closeModal` method.
|
|
20
|
+
*/
|
|
21
|
+
get beforeClose() {
|
|
22
|
+
return this._beforeClose;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* An event that the modal instance emits when it closes.
|
|
26
|
+
* It emits a `SkyCloseModalArgs` object with a `data` property that includes
|
|
27
|
+
* data passed from users on close or save and a `reason` property that indicates
|
|
28
|
+
* whether the modal was saved or closed without saving.
|
|
29
|
+
* The `reason` property accepts any string value.
|
|
30
|
+
* Common examples include `cancel`, `close`, and `save`.
|
|
31
|
+
*/
|
|
32
|
+
get closed() {
|
|
33
|
+
return this._closed;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* An event that the modal instance emits when users click
|
|
37
|
+
* the <i class="fa fa-question-circle" aria-hidden="true"></i> button.
|
|
38
|
+
* If a `helpKey` parameter was specified, the `helpOpened` event broadcasts the `helpKey`.
|
|
39
|
+
*/
|
|
40
|
+
get helpOpened() {
|
|
41
|
+
return this._helpOpened;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Closes the modal instance.
|
|
45
|
+
* @param result Specifies an object to emit to subscribers of the `closed` event of the
|
|
46
|
+
* modal instance. The `SkyModalInstance` provider can be injected into a component's constructor
|
|
47
|
+
* so that this `close` function can be called from a button in the `sky-modal-footer`.
|
|
48
|
+
* @param reason Specifies the reason for the modal closing, with the default reason of `close`.
|
|
49
|
+
* @param ignoreBeforeClose Indicates whether to ignore the modal instance's `beforeClose` event.
|
|
50
|
+
*/
|
|
51
|
+
close(result, reason, ignoreBeforeClose) {
|
|
52
|
+
if (reason === undefined) {
|
|
53
|
+
reason = 'close';
|
|
54
|
+
}
|
|
55
|
+
this.closeModal(reason, result, ignoreBeforeClose);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Closes the modal instance with `reason=cancel`.
|
|
59
|
+
* @param result Specifies an object to emit to subscribers of the `closed` event of the modal
|
|
60
|
+
* instance. The `SkyModalInstance` provider can be injected into a component's constructor so
|
|
61
|
+
* that this cancel function can be called from a button in the `sky-modal-footer`.
|
|
62
|
+
*/
|
|
63
|
+
cancel(result) {
|
|
64
|
+
this.closeModal('cancel', result);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Closes the modal instance with `reason=save`.
|
|
68
|
+
* @param result Specifies an object to emit to subscribers of the `closed` event of the modal
|
|
69
|
+
* instance. The `SkyModalInstance` provider can be injected into a component's constructor so
|
|
70
|
+
* that this `save` function can be called from a button in `the sky-modal-footer`.
|
|
71
|
+
*/
|
|
72
|
+
save(result) {
|
|
73
|
+
this.closeModal('save', result);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Triggers the `helpOpened` event that broadcasts a `helpKey` parameter to open
|
|
77
|
+
* when users click the <i class="fa fa-question-circle" aria-hidden="true"></i> button.
|
|
78
|
+
* @param helpKey Specifies a string to emit to subscribers of
|
|
79
|
+
* the modal instance's `helpOpened` event. Consumers can inject the `SkyModalInstance` provider
|
|
80
|
+
* into a component's constructor to call the `openHelp` function in the modal template.
|
|
81
|
+
*/
|
|
82
|
+
openHelp(helpKey) {
|
|
83
|
+
this._helpOpened.next(helpKey);
|
|
84
|
+
}
|
|
85
|
+
closeModal(type, result, ignoreBeforeClose = false) {
|
|
86
|
+
const args = new SkyModalCloseArgs();
|
|
87
|
+
args.reason = type;
|
|
88
|
+
args.data = result;
|
|
89
|
+
if (this._beforeClose.observers.length === 0 || ignoreBeforeClose) {
|
|
90
|
+
this.notifyClosed(args);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this._beforeClose.next(new SkyModalBeforeCloseHandler(() => {
|
|
94
|
+
this.notifyClosed(args);
|
|
95
|
+
}, args));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
notifyClosed(args) {
|
|
99
|
+
this._closed.next(args);
|
|
100
|
+
this._closed.complete();
|
|
101
|
+
this._beforeClose.complete();
|
|
102
|
+
this._helpOpened.complete();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=modal-instance.js.map
|