@skyux/modals 11.21.0 → 11.23.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/documentation.json +492 -417
- package/esm2022/lib/modules/shared/sky-modals-resources.module.mjs +3 -21
- package/esm2022/testing/legacy/modal-fixture.mjs +143 -0
- package/esm2022/testing/modules/confirm/confirm-button-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/confirm/confirm-button-harness.mjs +52 -0
- package/esm2022/testing/modules/confirm/confirm-harness.mjs +90 -0
- package/esm2022/testing/modules/confirm/confirm-testing.controller.mjs +7 -0
- package/esm2022/testing/{confirm → modules/confirm}/confirm-testing.module.mjs +1 -1
- package/esm2022/testing/modules/confirm/confirm-testing.service.mjs +101 -0
- package/esm2022/testing/modules/confirm/provide-confirm-testing.mjs +20 -0
- package/esm2022/testing/modules/modal/controller/modal-testing.controller.mjs +8 -0
- package/esm2022/testing/{modal → modules/modal}/controller/modal-testing.module.mjs +1 -1
- package/esm2022/testing/modules/modal/controller/modal-testing.service.mjs +60 -0
- package/esm2022/testing/modules/modal/controller/provide-modal-testing.mjs +20 -0
- package/esm2022/testing/modules/modal/modal-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/modal/modal-harness.mjs +110 -0
- package/esm2022/testing/public-api.mjs +9 -9
- package/fesm2022/skyux-modals-testing.mjs +22 -16
- package/fesm2022/skyux-modals-testing.mjs.map +1 -1
- package/fesm2022/skyux-modals.mjs +2 -20
- package/fesm2022/skyux-modals.mjs.map +1 -1
- package/lib/modules/shared/sky-modals-resources.module.d.ts +0 -4
- package/package.json +7 -7
- package/testing/public-api.d.ts +10 -10
- package/esm2022/testing/confirm/confirm-button-harness-filters.mjs +0 -2
- package/esm2022/testing/confirm/confirm-button-harness.mjs +0 -46
- package/esm2022/testing/confirm/confirm-harness.mjs +0 -90
- package/esm2022/testing/confirm/confirm-testing.controller.mjs +0 -7
- package/esm2022/testing/confirm/confirm-testing.service.mjs +0 -101
- package/esm2022/testing/confirm/provide-confirm-testing.mjs +0 -20
- package/esm2022/testing/modal/controller/modal-testing.controller.mjs +0 -8
- package/esm2022/testing/modal/controller/modal-testing.service.mjs +0 -60
- package/esm2022/testing/modal/controller/provide-modal-testing.mjs +0 -20
- package/esm2022/testing/modal/modal-harness-filters.mjs +0 -2
- package/esm2022/testing/modal/modal-harness.mjs +0 -110
- package/esm2022/testing/modal-fixture.mjs +0 -143
- /package/testing/{modal-fixture.d.ts → legacy/modal-fixture.d.ts} +0 -0
- /package/testing/{confirm → modules/confirm}/confirm-button-harness-filters.d.ts +0 -0
- /package/testing/{confirm → modules/confirm}/confirm-button-harness.d.ts +0 -0
- /package/testing/{confirm → modules/confirm}/confirm-harness.d.ts +0 -0
- /package/testing/{confirm → modules/confirm}/confirm-testing.controller.d.ts +0 -0
- /package/testing/{confirm → modules/confirm}/confirm-testing.module.d.ts +0 -0
- /package/testing/{confirm → modules/confirm}/confirm-testing.service.d.ts +0 -0
- /package/testing/{confirm → modules/confirm}/provide-confirm-testing.d.ts +0 -0
- /package/testing/{modal → modules/modal}/controller/modal-testing.controller.d.ts +0 -0
- /package/testing/{modal → modules/modal}/controller/modal-testing.module.d.ts +0 -0
- /package/testing/{modal → modules/modal}/controller/modal-testing.service.d.ts +0 -0
- /package/testing/{modal → modules/modal}/controller/provide-modal-testing.d.ts +0 -0
- /package/testing/{modal → modules/modal}/modal-harness-filters.d.ts +0 -0
- /package/testing/{modal → modules/modal}/modal-harness.d.ts +0 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* To update this file, simply rerun the command.
|
|
7
7
|
*/
|
|
8
8
|
import { NgModule } from '@angular/core';
|
|
9
|
-
import {
|
|
9
|
+
import { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
const RESOURCES = {
|
|
12
12
|
'EN-US': {
|
|
@@ -28,36 +28,18 @@ const RESOURCES = {
|
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
30
|
SkyLibResourcesService.addResources(RESOURCES);
|
|
31
|
-
export class SkyModalsResourcesProvider {
|
|
32
|
-
getString(localeInfo, name) {
|
|
33
|
-
return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
31
|
/**
|
|
37
32
|
* Import into any component library module that needs to use resource strings.
|
|
38
33
|
*/
|
|
39
34
|
export class SkyModalsResourcesModule {
|
|
40
35
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyModalsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
41
36
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: SkyModalsResourcesModule, exports: [SkyI18nModule] }); }
|
|
42
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyModalsResourcesModule,
|
|
43
|
-
{
|
|
44
|
-
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
45
|
-
useClass: SkyModalsResourcesProvider,
|
|
46
|
-
multi: true,
|
|
47
|
-
},
|
|
48
|
-
], imports: [SkyI18nModule] }); }
|
|
37
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyModalsResourcesModule, imports: [SkyI18nModule] }); }
|
|
49
38
|
}
|
|
50
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyModalsResourcesModule, decorators: [{
|
|
51
40
|
type: NgModule,
|
|
52
41
|
args: [{
|
|
53
42
|
exports: [SkyI18nModule],
|
|
54
|
-
providers: [
|
|
55
|
-
{
|
|
56
|
-
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
57
|
-
useClass: SkyModalsResourcesProvider,
|
|
58
|
-
multi: true,
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
43
|
}]
|
|
62
44
|
}] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LW1vZGFscy1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1tb2RhbHMtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFFMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1Asb0NBQW9DLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO1FBQ3ZELHFDQUFxQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtRQUN6RCxvQ0FBb0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDdkQsd0NBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQy9ELGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtRQUM3QyxxQkFBcUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7UUFDL0MsZ0NBQWdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQ3ZELGlDQUFpQyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUN0RCxpQ0FBaUMsRUFBRTtZQUNqQyxPQUFPLEVBQUUsZ0RBQWdEO1NBQzFEO1FBQ0QsOENBQThDLEVBQUU7WUFDOUMsT0FBTyxFQUFFLGlCQUFpQjtTQUMzQjtRQUNELDJDQUEyQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtLQUN6RTtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCOzhHQUF4Qix3QkFBd0I7K0dBQXhCLHdCQUF3QixZQUZ6QixhQUFhOytHQUVaLHdCQUF3QixZQUZ6QixhQUFhOzsyRkFFWix3QkFBd0I7a0JBSHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG5cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LW1vZGFscycgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPiA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X2NvbmZpcm1fZGlhbG9nX2RlZmF1bHRfb2tfdGV4dDogeyBtZXNzYWdlOiAnT0snIH0sXG4gICAgc2t5dXhfY29uZmlybV9kaWFsb2dfZGVmYXVsdF95ZXNfdGV4dDogeyBtZXNzYWdlOiAnWWVzJyB9LFxuICAgIHNreXV4X2NvbmZpcm1fZGlhbG9nX2RlZmF1bHRfbm9fdGV4dDogeyBtZXNzYWdlOiAnTm8nIH0sXG4gICAgc2t5dXhfY29uZmlybV9kaWFsb2dfZGVmYXVsdF9jYW5jZWxfdGV4dDogeyBtZXNzYWdlOiAnQ2FuY2VsJyB9LFxuICAgIHNreXV4X21vZGFsX2Nsb3NlOiB7IG1lc3NhZ2U6ICdDbG9zZSBtb2RhbCcgfSxcbiAgICBza3l1eF9tb2RhbF9vcGVuX2hlbHA6IHsgbWVzc2FnZTogJ09wZW4gSGVscCcgfSxcbiAgICBza3l1eF9tb2RhbF9mb290ZXJfY2FuY2VsX2J1dHRvbjogeyBtZXNzYWdlOiAnQ2FuY2VsJyB9LFxuICAgIHNreXV4X21vZGFsX2Zvb3Rlcl9wcmltYXJ5X2J1dHRvbjogeyBtZXNzYWdlOiAnU2F2ZScgfSxcbiAgICBza3l1eF9tb2RhbF9kaXJ0eV9kZWZhdWx0X21lc3NhZ2U6IHtcbiAgICAgIG1lc3NhZ2U6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGlzY2FyZCB5b3VyIGNoYW5nZXM/JyxcbiAgICB9LFxuICAgIHNreXV4X21vZGFsX2RpcnR5X2RlZmF1bHRfZGlzY2FyZF9jaGFuZ2VzX3RleHQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdEaXNjYXJkIGNoYW5nZXMnLFxuICAgIH0sXG4gICAgc2t5dXhfbW9kYWxfZGlydHlfZGVmYXVsdF9rZWVwX3dvcmtpbmdfdGV4dDogeyBtZXNzYWdlOiAnS2VlcCB3b3JraW5nJyB9LFxuICB9LFxufTtcblxuU2t5TGliUmVzb3VyY2VzU2VydmljZS5hZGRSZXNvdXJjZXMoUkVTT1VSQ0VTKTtcblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TW9kYWxzUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allows interaction with a SKY UX modal component.
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export class SkyModalFixture {
|
|
6
|
+
#modalElement;
|
|
7
|
+
#fixture;
|
|
8
|
+
constructor(fixture, skyTestId) {
|
|
9
|
+
this.#fixture = fixture;
|
|
10
|
+
const modalElement = document.querySelector('sky-modal[data-sky-id="' + skyTestId + '"]');
|
|
11
|
+
if (!modalElement) {
|
|
12
|
+
throw new Error(`No element was found with a \`data-sky-id\` value of "${skyTestId}".`);
|
|
13
|
+
}
|
|
14
|
+
this.#modalElement = modalElement;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The modal component's ARIA describedby attribute.
|
|
18
|
+
*/
|
|
19
|
+
get ariaDescribedBy() {
|
|
20
|
+
const modalDialogElement = this.#getModalDialogElement();
|
|
21
|
+
/* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide "undefined" */
|
|
22
|
+
const describedByAttribute =
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
24
|
+
modalDialogElement.getAttribute('aria-describedby');
|
|
25
|
+
return describedByAttribute;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The modal component's ARIA labelledby attribute.
|
|
29
|
+
*/
|
|
30
|
+
get ariaLabelledBy() {
|
|
31
|
+
const modalDialogElement = this.#getModalDialogElement();
|
|
32
|
+
/* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide "undefined" */
|
|
33
|
+
const labelledByAttribute =
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
35
|
+
modalDialogElement.getAttribute('aria-labelledby');
|
|
36
|
+
return labelledByAttribute;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The modal component's role attribute.
|
|
40
|
+
*/
|
|
41
|
+
get ariaRole() {
|
|
42
|
+
const modalDialogElement = this.#getModalDialogElement();
|
|
43
|
+
/* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide "undefined" */
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
45
|
+
const roleAttribute = modalDialogElement.getAttribute('role');
|
|
46
|
+
return roleAttribute;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Whether or not the modal is a full page modal.
|
|
50
|
+
*/
|
|
51
|
+
get fullPage() {
|
|
52
|
+
const modalDivElement = this.getModalDiv();
|
|
53
|
+
return modalDivElement.classList.contains('sky-modal-full-page');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The size of the modal.
|
|
57
|
+
*/
|
|
58
|
+
get size() {
|
|
59
|
+
const modalDivElement = this.getModalDiv();
|
|
60
|
+
const possibleSizes = ['small', 'medium', 'large'];
|
|
61
|
+
for (const size of possibleSizes) {
|
|
62
|
+
if (modalDivElement.classList.contains('sky-modal-' + size)) {
|
|
63
|
+
return size;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether or not the modal is set up for tiled content.
|
|
70
|
+
*/
|
|
71
|
+
get tiledBody() {
|
|
72
|
+
const modalDivElement = this.getModalDiv();
|
|
73
|
+
return modalDivElement.classList.contains('sky-modal-tiled');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Clicks the modal header's "close" button.
|
|
77
|
+
*/
|
|
78
|
+
clickHeaderCloseButton() {
|
|
79
|
+
this.#checkModalElement();
|
|
80
|
+
const closeButton = this.#modalElement.querySelector('.sky-modal .sky-modal-btn-close');
|
|
81
|
+
if (closeButton &&
|
|
82
|
+
window.getComputedStyle(closeButton).display !== 'none') {
|
|
83
|
+
closeButton.click();
|
|
84
|
+
this.#fixture.detectChanges();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw new Error(`No header close button exists.`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Clicks the modal header's "help" button.
|
|
92
|
+
*/
|
|
93
|
+
clickHelpButton() {
|
|
94
|
+
this.#checkModalElement();
|
|
95
|
+
const helpButton = this.#modalElement.querySelector('.sky-modal .sky-modal-header-buttons button[name="help-button"]');
|
|
96
|
+
if (helpButton && window.getComputedStyle(helpButton).display !== 'none') {
|
|
97
|
+
helpButton.click();
|
|
98
|
+
this.#fixture.detectChanges();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
throw new Error(`No help button exists.`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns the main modal element.
|
|
106
|
+
*/
|
|
107
|
+
getModalDiv() {
|
|
108
|
+
this.#checkModalElement();
|
|
109
|
+
return this.#modalElement.querySelector('.sky-modal');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Returns the modal's content element.
|
|
113
|
+
*/
|
|
114
|
+
getModalContentEl() {
|
|
115
|
+
this.#checkModalElement();
|
|
116
|
+
return this.#modalElement.querySelector('.sky-modal-content');
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns the modal's footer element.
|
|
120
|
+
*/
|
|
121
|
+
getModalFooterEl() {
|
|
122
|
+
this.#checkModalElement();
|
|
123
|
+
return this.#modalElement.querySelector('.sky-modal-footer');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Returns the modal's header element.
|
|
127
|
+
*/
|
|
128
|
+
getModalHeaderEl() {
|
|
129
|
+
this.#checkModalElement();
|
|
130
|
+
return this.#modalElement.querySelector('.sky-modal-header');
|
|
131
|
+
}
|
|
132
|
+
#checkModalElement() {
|
|
133
|
+
if (!document.contains(this.#modalElement)) {
|
|
134
|
+
throw new Error('Modal element no longer exists. Was the modal closed?');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
#getModalDialogElement() {
|
|
138
|
+
this.#checkModalElement();
|
|
139
|
+
// We can always know that the dialog element will exist if the modal is open and exists.
|
|
140
|
+
return this.#modalElement.querySelector('.sky-modal-dialog');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvdGVzdGluZy9zcmMvbGVnYWN5L21vZGFsLWZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDMUIsYUFBYSxDQUFjO0lBRTNCLFFBQVEsQ0FBNEI7SUFFcEMsWUFBWSxPQUFrQyxFQUFFLFNBQWlCO1FBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQ3pDLHlCQUF5QixHQUFHLFNBQVMsR0FBRyxJQUFJLENBQzlCLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELFNBQVMsSUFBSSxDQUN2RSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsZUFBZTtRQUN4QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pELHNJQUFzSTtRQUN0SSxNQUFNLG9CQUFvQjtRQUN4QixvRUFBb0U7UUFDcEUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFFLENBQUM7UUFDdkQsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGNBQWM7UUFDdkIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6RCxzSUFBc0k7UUFDdEksTUFBTSxtQkFBbUI7UUFDdkIsb0VBQW9FO1FBQ3BFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBRSxDQUFDO1FBRXRELE9BQU8sbUJB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ckIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIseUZBQXlGO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUUsQ0FBQztJQUNoRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBbGxvd3MgaW50ZXJhY3Rpb24gd2l0aCBhIFNLWSBVWCBtb2RhbCBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreU1vZGFsRml4dHVyZSB7XG4gICNtb2RhbEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICNmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPHVua25vd24+O1xuXG4gIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4sIHNreVRlc3RJZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jZml4dHVyZSA9IGZpeHR1cmU7XG4gICAgY29uc3QgbW9kYWxFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdza3ktbW9kYWxbZGF0YS1za3ktaWQ9XCInICsgc2t5VGVzdElkICsgJ1wiXScsXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICghbW9kYWxFbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBObyBlbGVtZW50IHdhcyBmb3VuZCB3aXRoIGEgXFxgZGF0YS1za3ktaWRcXGAgdmFsdWUgb2YgXCIke3NreVRlc3RJZH1cIi5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNtb2RhbEVsZW1lbnQgPSBtb2RhbEVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1vZGFsIGNvbXBvbmVudCdzIEFSSUEgZGVzY3JpYmVkYnkgYXR0cmlidXRlLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhRGVzY3JpYmVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtb2RhbERpYWxvZ0VsZW1lbnQgPSB0aGlzLiNnZXRNb2RhbERpYWxvZ0VsZW1lbnQoKTtcbiAgICAvKiBOb24tbnVsbCBhc3NlcnRpb24gYXMgb3VyIGNvbXBvbmVudCBoYXMgYSBkZWZhdWx0IGZvciBpZiB0aGUgdXNlciBkb2VzIG5vdCBwcm92aWRlIHRoaXMgYXR0cmlidXRlIG9yIGlmIHRoZXkgcHJvdmlkZSBcInVuZGVmaW5lZFwiICovXG4gICAgY29uc3QgZGVzY3JpYmVkQnlBdHRyaWJ1dGUgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIG1vZGFsRGlhbG9nRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKSE7XG4gICAgcmV0dXJuIGRlc2NyaWJlZEJ5QXR0cmlidXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RhbCBjb21wb25lbnQncyBBUklBIGxhYmVsbGVkYnkgYXR0cmlidXRlLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhTGFiZWxsZWRCeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1vZGFsRGlhbG9nRWxlbWVudCA9IHRoaXMuI2dldE1vZGFsRGlhbG9nRWxlbWVudCgpO1xuICAgIC8qIE5vbi1udWxsIGFzc2VydGlvbiBhcyBvdXIgY29tcG9uZW50IGhhcyBhIGRlZmF1bHQgZm9yIGlmIHRoZSB1c2VyIGRvZXMgbm90IHByb3ZpZGUgdGhpcyBhdHRyaWJ1dGUgb3IgaWYgdGhleSBwcm92aWRlIFwidW5kZWZpbmVkXCIgKi9cbiAgICBjb25zdCBsYWJlbGxlZEJ5QXR0cmlidXRlID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICBtb2RhbERpYWxvZ0VsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKSE7XG5cbiAgICByZXR1cm4gbGFiZWxsZWRCeUF0dHJpYnV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbW9kYWwgY29tcG9uZW50J3Mgcm9sZSBhdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaWFSb2xlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW9kYWxEaWFsb2dFbGVtZW50ID0gdGhpcy4jZ2V0TW9kYWxEaWFsb2dFbGVtZW50KCk7XG4gICAgLyogTm9uLW51bGwgYXNzZXJ0aW9uIGFzIG91ciBjb21wb25lbnQgaGFzIGEgZGVmYXVsdCBmb3IgaWYgdGhlIHVzZXIgZG9lcyBub3QgcHJvdmlkZSB0aGlzIGF0dHJpYnV0ZSBvciBpZiB0aGV5IHByb3ZpZGUgXCJ1bmRlZmluZWRcIiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgY29uc3Qgcm9sZUF0dHJpYnV0ZSA9IG1vZGFsRGlhbG9nRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSE7XG4gICAgcmV0dXJuIHJvbGVBdHRyaWJ1dGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIG1vZGFsIGlzIGEgZnVsbCBwYWdlIG1vZGFsLlxuICAgKi9cbiAgcHVibGljIGdldCBmdWxsUGFnZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBtb2RhbERpdkVsZW1lbnQgPSB0aGlzLmdldE1vZGFsRGl2KCk7XG4gICAgcmV0dXJuIG1vZGFsRGl2RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3NreS1tb2RhbC1mdWxsLXBhZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgbW9kYWwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNpemUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtb2RhbERpdkVsZW1lbnQgPSB0aGlzLmdldE1vZGFsRGl2KCk7XG4gICAgY29uc3QgcG9zc2libGVTaXplcyA9IFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ107XG5cbiAgICBmb3IgKGNvbnN0IHNpemUgb2YgcG9zc2libGVTaXplcykge1xuICAgICAgaWYgKG1vZGFsRGl2RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3NreS1tb2RhbC0nICsgc2l6ZSkpIHtcbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBtb2RhbCBpcyBzZXQgdXAgZm9yIHRpbGVkIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRpbGVkQm9keSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBtb2RhbERpdkVsZW1lbnQgPSB0aGlzLmdldE1vZGFsRGl2KCk7XG4gICAgcmV0dXJuIG1vZGFsRGl2RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3NreS1tb2RhbC10aWxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgbW9kYWwgaGVhZGVyJ3MgXCJjbG9zZVwiIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBjbGlja0hlYWRlckNsb3NlQnV0dG9uKCk6IHZvaWQge1xuICAgIHRoaXMuI2NoZWNrTW9kYWxFbGVtZW50KCk7XG4gICAgY29uc3QgY2xvc2VCdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IHRoaXMuI21vZGFsRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5za3ktbW9kYWwgLnNreS1tb2RhbC1idG4tY2xvc2UnLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBjbG9zZUJ1dHRvbiAmJlxuICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoY2xvc2VCdXR0b24pLmRpc3BsYXkgIT09ICdub25lJ1xuICAgICkge1xuICAgICAgY2xvc2VCdXR0b24uY2xpY2soKTtcbiAgICAgIHRoaXMuI2ZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGhlYWRlciBjbG9zZSBidXR0b24gZXhpc3RzLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIG1vZGFsIGhlYWRlcidzIFwiaGVscFwiIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBjbGlja0hlbHBCdXR0b24oKTogdm9pZCB7XG4gICAgdGhpcy4jY2hlY2tNb2RhbEVsZW1lbnQoKTtcbiAgICBjb25zdCBoZWxwQnV0dG9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSB0aGlzLiNtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2t5LW1vZGFsIC5za3ktbW9kYWwtaGVhZGVyLWJ1dHRvbnMgYnV0dG9uW25hbWU9XCJoZWxwLWJ1dHRvblwiXScsXG4gICAgKTtcblxuICAgIGlmIChoZWxwQnV0dG9uICYmIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGhlbHBCdXR0b24pLmRpc3BsYXkgIT09ICdub25lJykge1xuICAgICAgaGVscEJ1dHRvbi5jbGljaygpO1xuICAgICAgdGhpcy4jZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gaGVscCBidXR0b24gZXhpc3RzLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtYWluIG1vZGFsIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9kYWxEaXYoKTogYW55IHtcbiAgICB0aGlzLiNjaGVja01vZGFsRWxlbWVudCgpO1xuICAgIHJldHVybiB0aGlzLiNtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1tb2RhbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGFsJ3MgY29udGVudCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQ29udGVudEVsKCk6IGFueSB7XG4gICAgdGhpcy4jY2hlY2tNb2RhbEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy4jbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktbW9kYWwtY29udGVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGFsJ3MgZm9vdGVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9kYWxGb290ZXJFbCgpOiBhbnkge1xuICAgIHRoaXMuI2NoZWNrTW9kYWxFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMuI21vZGFsRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LW1vZGFsLWZvb3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGFsJ3MgaGVhZGVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9kYWxIZWFkZXJFbCgpOiBhbnkge1xuICAgIHRoaXMuI2NoZWNrTW9kYWxFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMuI21vZGFsRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LW1vZGFsLWhlYWRlcicpO1xuICB9XG5cbiAgI2NoZWNrTW9kYWxFbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICghZG9jdW1lbnQuY29udGFpbnModGhpcy4jbW9kYWxFbGVtZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNb2RhbCBlbGVtZW50IG5vIGxvbmdlciBleGlzdHMuIFdhcyB0aGUgbW9kYWwgY2xvc2VkPycpO1xuICAgIH1cbiAgfVxuXG4gICNnZXRNb2RhbERpYWxvZ0VsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHRoaXMuI2NoZWNrTW9kYWxFbGVtZW50KCk7XG4gICAgLy8gV2UgY2FuIGFsd2F5cyBrbm93IHRoYXQgdGhlIGRpYWxvZyBlbGVtZW50IHdpbGwgZXhpc3QgaWYgdGhlIG1vZGFsIGlzIG9wZW4gYW5kIGV4aXN0cy5cbiAgICByZXR1cm4gdGhpcy4jbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktbW9kYWwtZGlhbG9nJykhO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1idXR0b24taGFybmVzcy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NvbmZpcm0vY29uZmlybS1idXR0b24taGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlSGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5cbi8qKlxuICogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIFNreUNvbmZpcm1CdXR0b25IYXJuZXNzIGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lDb25maXJtQnV0dG9uSGFybmVzc0ZpbHRlcnNcbiAgZXh0ZW5kcyBPbWl0PEJhc2VIYXJuZXNzRmlsdGVycywgJ3NlbGVjdG9yJz4ge1xuICAvKipcbiAgICogT25seSBmaW5kIGluc3RhbmNlcyB3aG9zZSBjb250ZW50IG1hdGNoZXMgdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgdGV4dD86IHN0cmluZyB8IFJlZ0V4cDtcblxuICAvKipcbiAgICogT25seSBmaW5kIGluc3RhbmNlcyB3aG9zZSBzdHlsZSBtYXRjaGVzIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gIHN0eWxlVHlwZT86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
2
|
+
/**
|
|
3
|
+
* Harness for interacting with a confirm component in tests.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export class SkyConfirmButtonHarness extends ComponentHarness {
|
|
7
|
+
static { this.hostSelector = '.sky-confirm-buttons .sky-btn'; }
|
|
8
|
+
/**
|
|
9
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
10
|
+
* `SkyConfirmButtonHarness` that meets certain criteria.
|
|
11
|
+
*/
|
|
12
|
+
static with(filters) {
|
|
13
|
+
return new HarnessPredicate(SkyConfirmButtonHarness, filters)
|
|
14
|
+
.addOption('text', filters.text, async (harness, text) => {
|
|
15
|
+
const buttonText = await harness.getText();
|
|
16
|
+
return await HarnessPredicate.stringMatches(buttonText, text);
|
|
17
|
+
})
|
|
18
|
+
.addOption('styleType', filters.styleType, async (harness, styleType) => {
|
|
19
|
+
const buttonStyleType = await harness.getStyleType();
|
|
20
|
+
return await HarnessPredicate.stringMatches(buttonStyleType, styleType);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Clicks the confirm button.
|
|
25
|
+
*/
|
|
26
|
+
async click() {
|
|
27
|
+
await (await this.host()).click();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Gets the button style of the confirm button.
|
|
31
|
+
*/
|
|
32
|
+
async getStyleType() {
|
|
33
|
+
const hostEl = await this.host();
|
|
34
|
+
if (await hostEl.hasClass('sky-btn-primary')) {
|
|
35
|
+
return 'primary';
|
|
36
|
+
}
|
|
37
|
+
else if (await hostEl.hasClass('sky-btn-link')) {
|
|
38
|
+
return 'link';
|
|
39
|
+
}
|
|
40
|
+
else if (await hostEl.hasClass('sky-btn-danger')) {
|
|
41
|
+
return 'danger';
|
|
42
|
+
}
|
|
43
|
+
return 'default';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets the text content of the confirm button.
|
|
47
|
+
*/
|
|
48
|
+
async getText() {
|
|
49
|
+
return await (await this.host()).text();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1idXR0b24taGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvdGVzdGluZy9zcmMvbW9kdWxlcy9jb25maXJtL2NvbmZpcm0tYnV0dG9uLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLMUU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjthQUM3QyxpQkFBWSxHQUFHLCtCQUErQixDQUFDO0lBRTdEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQXVDO1FBRXZDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUM7YUFDMUQsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0MsT0FBTyxNQUFNLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDO2FBQ0QsU0FBUyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDdEUsTUFBTSxlQUFlLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckQsT0FBTyxNQUFNLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBSztRQUNoQixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxJQUFJLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQzthQUFNLElBQUksTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQzthQUFNLElBQUksTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUNuRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcywgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbmZpcm1CdXR0b25TdHlsZVR5cGUgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHsgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9jb25maXJtLWJ1dHRvbi1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBjb25maXJtIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3MgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzIHtcbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnLnNreS1jb25maXJtLWJ1dHRvbnMgLnNreS1idG4nO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lDb25maXJtQnV0dG9uSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUNvbmZpcm1CdXR0b25IYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lDb25maXJtQnV0dG9uSGFybmVzcz4ge1xuICAgIHJldHVybiBuZXcgSGFybmVzc1ByZWRpY2F0ZShTa3lDb25maXJtQnV0dG9uSGFybmVzcywgZmlsdGVycylcbiAgICAgIC5hZGRPcHRpb24oJ3RleHQnLCBmaWx0ZXJzLnRleHQsIGFzeW5jIChoYXJuZXNzLCB0ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvblRleHQgPSBhd2FpdCBoYXJuZXNzLmdldFRleHQoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IEhhcm5lc3NQcmVkaWNhdGUuc3RyaW5nTWF0Y2hlcyhidXR0b25UZXh0LCB0ZXh0KTtcbiAgICAgIH0pXG4gICAgICAuYWRkT3B0aW9uKCdzdHlsZVR5cGUnLCBmaWx0ZXJzLnN0eWxlVHlwZSwgYXN5bmMgKGhhcm5lc3MsIHN0eWxlVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBidXR0b25TdHlsZVR5cGUgPSBhd2FpdCBoYXJuZXNzLmdldFN0eWxlVHlwZSgpO1xuICAgICAgICByZXR1cm4gYXdhaXQgSGFybmVzc1ByZWRpY2F0ZS5zdHJpbmdNYXRjaGVzKGJ1dHRvblN0eWxlVHlwZSwgc3R5bGVUeXBlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgY29uZmlybSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJ1dHRvbiBzdHlsZSBvZiB0aGUgY29uZmlybSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U3R5bGVUeXBlKCk6IFByb21pc2U8U2t5Q29uZmlybUJ1dHRvblN0eWxlVHlwZT4ge1xuICAgIGNvbnN0IGhvc3RFbCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuXG4gICAgaWYgKGF3YWl0IGhvc3RFbC5oYXNDbGFzcygnc2t5LWJ0bi1wcmltYXJ5JykpIHtcbiAgICAgIHJldHVybiAncHJpbWFyeSc7XG4gICAgfSBlbHNlIGlmIChhd2FpdCBob3N0RWwuaGFzQ2xhc3MoJ3NreS1idG4tbGluaycpKSB7XG4gICAgICByZXR1cm4gJ2xpbmsnO1xuICAgIH0gZWxzZSBpZiAoYXdhaXQgaG9zdEVsLmhhc0NsYXNzKCdza3ktYnRuLWRhbmdlcicpKSB7XG4gICAgICByZXR1cm4gJ2Rhbmdlcic7XG4gICAgfVxuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBjb25maXJtIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkudGV4dCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
import { SkyConfirmType } from '@skyux/modals';
|
|
3
|
+
import { SkyConfirmButtonHarness } from './confirm-button-harness';
|
|
4
|
+
/**
|
|
5
|
+
* Harness for interacting with a confirm component in tests.
|
|
6
|
+
*/
|
|
7
|
+
export class SkyConfirmHarness extends SkyComponentHarness {
|
|
8
|
+
static { this.hostSelector = 'sky-confirm'; }
|
|
9
|
+
#getBodyEl = this.locatorForOptional('.sky-confirm-body');
|
|
10
|
+
#getButtons = this.locatorForAll(SkyConfirmButtonHarness);
|
|
11
|
+
#getConfirmEl = this.locatorFor('.sky-confirm');
|
|
12
|
+
#getMessageEl = this.locatorFor('.sky-confirm-message');
|
|
13
|
+
/**
|
|
14
|
+
* Clicks a confirm button.
|
|
15
|
+
*/
|
|
16
|
+
async clickCustomButton(filters) {
|
|
17
|
+
const buttons = await this.getCustomButtons(filters);
|
|
18
|
+
if (buttons.length > 1) {
|
|
19
|
+
if (filters.text instanceof RegExp) {
|
|
20
|
+
filters.text = filters.text.toString();
|
|
21
|
+
}
|
|
22
|
+
throw new Error(`More than one button matches the filter(s): ${JSON.stringify(filters)}.`);
|
|
23
|
+
}
|
|
24
|
+
await buttons[0].click();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Clicks a confirm button.
|
|
28
|
+
*/
|
|
29
|
+
async clickOkButton() {
|
|
30
|
+
const type = await this.getType();
|
|
31
|
+
if (type === SkyConfirmType.Custom) {
|
|
32
|
+
throw new Error('Cannot click OK button on a confirm of type custom.');
|
|
33
|
+
}
|
|
34
|
+
const buttons = await this.#getButtons();
|
|
35
|
+
await buttons[0].click();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the body of the confirm component.
|
|
39
|
+
*/
|
|
40
|
+
async getBodyText() {
|
|
41
|
+
return await (await this.#getBodyEl())?.text();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets the confirm component's custom buttons.
|
|
45
|
+
*/
|
|
46
|
+
async getCustomButtons(filters) {
|
|
47
|
+
const confirmType = await this.getType();
|
|
48
|
+
if (confirmType === SkyConfirmType.OK) {
|
|
49
|
+
throw new Error('Cannot get custom buttons for confirm of type OK.');
|
|
50
|
+
}
|
|
51
|
+
const harnesses = await this.#queryHarnesses(SkyConfirmButtonHarness.with(filters || {}));
|
|
52
|
+
if (filters && harnesses.length === 0) {
|
|
53
|
+
// Stringify the regular expression so that it's readable in the console log.
|
|
54
|
+
if (filters.text instanceof RegExp) {
|
|
55
|
+
filters.text = filters.text.toString();
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`Could not find buttons matching filter(s): ${JSON.stringify(filters)}.`);
|
|
58
|
+
}
|
|
59
|
+
return harnesses;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Gets the message of the confirm component.
|
|
63
|
+
*/
|
|
64
|
+
async getMessageText() {
|
|
65
|
+
return await (await this.#getMessageEl()).text();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Gets the type of the confirm component.
|
|
69
|
+
*/
|
|
70
|
+
async getType() {
|
|
71
|
+
const confirmEl = await this.#getConfirmEl();
|
|
72
|
+
if (await confirmEl.hasClass('sky-confirm-type-ok')) {
|
|
73
|
+
return SkyConfirmType.OK;
|
|
74
|
+
}
|
|
75
|
+
return SkyConfirmType.Custom;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Whether the whitespace is preserved on the confirm component.
|
|
79
|
+
*/
|
|
80
|
+
async isWhiteSpacePreserved() {
|
|
81
|
+
return await (await this.#getMessageEl()).hasClass('sky-confirm-preserve-white-space');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns child harnesses.
|
|
85
|
+
*/
|
|
86
|
+
async #queryHarnesses(harness) {
|
|
87
|
+
return await this.locatorForAll(harness)();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NvbmZpcm0vY29uZmlybS1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHbkU7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQW1CO2FBQzFDLGlCQUFZLEdBQUcsYUFBYSxDQUFDO0lBRTNDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMxRCxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFELGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFeEQ7O09BRUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQzVCLE9BQXVDO1FBRXZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLE9BQU8sQ0FBQyxJQUFJLFlBQVksTUFBTSxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwrQ0FBK0MsSUFBSSxDQUFDLFNBQVMsQ0FDM0QsT0FBTyxDQUNSLEdBQUcsQ0FDTCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWxDLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQixDQUMzQixPQUF3QztRQUV4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV6QyxJQUFJLFdBQVcsS0FBSyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQzFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQzVDLENBQUM7UUFFRixJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLDZFQUE2RTtZQUM3RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLFlBQVksTUFBTSxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYiw4Q0FBOEMsSUFBSSxDQUFDLFNBQVMsQ0FDMUQsT0FBTyxDQUNSLEdBQUcsQ0FDTCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0MsSUFBSSxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxxQkFBcUI7UUFDaEMsT0FBTyxNQUFNLENBQ1gsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQzNCLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBd0I7UUFFeEIsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcywgSGFybmVzc1F1ZXJ5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29uZmlybVR5cGUgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHsgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3MgfSBmcm9tICcuL2NvbmZpcm0tYnV0dG9uLWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9jb25maXJtLWJ1dHRvbi1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBjb25maXJtIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNvbmZpcm1IYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1jb25maXJtJztcblxuICAjZ2V0Qm9keUVsID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktY29uZmlybS1ib2R5Jyk7XG4gICNnZXRCdXR0b25zID0gdGhpcy5sb2NhdG9yRm9yQWxsKFNreUNvbmZpcm1CdXR0b25IYXJuZXNzKTtcbiAgI2dldENvbmZpcm1FbCA9IHRoaXMubG9jYXRvckZvcignLnNreS1jb25maXJtJyk7XG4gICNnZXRNZXNzYWdlRWwgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktY29uZmlybS1tZXNzYWdlJyk7XG5cbiAgLyoqXG4gICAqIENsaWNrcyBhIGNvbmZpcm0gYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrQ3VzdG9tQnV0dG9uKFxuICAgIGZpbHRlcnM6IFNreUNvbmZpcm1CdXR0b25IYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYnV0dG9ucyA9IGF3YWl0IHRoaXMuZ2V0Q3VzdG9tQnV0dG9ucyhmaWx0ZXJzKTtcblxuICAgIGlmIChidXR0b25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIGlmIChmaWx0ZXJzLnRleHQgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgZmlsdGVycy50ZXh0ID0gZmlsdGVycy50ZXh0LnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBNb3JlIHRoYW4gb25lIGJ1dHRvbiBtYXRjaGVzIHRoZSBmaWx0ZXIocyk6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgKX0uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IGJ1dHRvbnNbMF0uY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgYSBjb25maXJtIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja09rQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHR5cGUgPSBhd2FpdCB0aGlzLmdldFR5cGUoKTtcblxuICAgIGlmICh0eXBlID09PSBTa3lDb25maXJtVHlwZS5DdXN0b20pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNsaWNrIE9LIGJ1dHRvbiBvbiBhIGNvbmZpcm0gb2YgdHlwZSBjdXN0b20uJyk7XG4gICAgfVxuICAgIGNvbnN0IGJ1dHRvbnMgPSBhd2FpdCB0aGlzLiNnZXRCdXR0b25zKCk7XG4gICAgYXdhaXQgYnV0dG9uc1swXS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJvZHkgb2YgdGhlIGNvbmZpcm0gY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEJvZHlUZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRCb2R5RWwoKSk/LnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjb25maXJtIGNvbXBvbmVudCdzIGN1c3RvbSBidXR0b25zLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbUJ1dHRvbnMoXG4gICAgZmlsdGVycz86IFNreUNvbmZpcm1CdXR0b25IYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTxTa3lDb25maXJtQnV0dG9uSGFybmVzc1tdPiB7XG4gICAgY29uc3QgY29uZmlybVR5cGUgPSBhd2FpdCB0aGlzLmdldFR5cGUoKTtcblxuICAgIGlmIChjb25maXJtVHlwZSA9PT0gU2t5Q29uZmlybVR5cGUuT0spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCBjdXN0b20gYnV0dG9ucyBmb3IgY29uZmlybSBvZiB0eXBlIE9LLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhcm5lc3NlcyA9IGF3YWl0IHRoaXMuI3F1ZXJ5SGFybmVzc2VzKFxuICAgICAgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3Mud2l0aChmaWx0ZXJzIHx8IHt9KSxcbiAgICApO1xuXG4gICAgaWYgKGZpbHRlcnMgJiYgaGFybmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gU3RyaW5naWZ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gc28gdGhhdCBpdCdzIHJlYWRhYmxlIGluIHRoZSBjb25zb2xlIGxvZy5cbiAgICAgIGlmIChmaWx0ZXJzLnRleHQgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgZmlsdGVycy50ZXh0ID0gZmlsdGVycy50ZXh0LnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBmaW5kIGJ1dHRvbnMgbWF0Y2hpbmcgZmlsdGVyKHMpOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICl9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBoYXJuZXNzZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbWVzc2FnZSBvZiB0aGUgY29uZmlybSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TWVzc2FnZVRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldE1lc3NhZ2VFbCgpKS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdHlwZSBvZiB0aGUgY29uZmlybSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VHlwZSgpOiBQcm9taXNlPFNreUNvbmZpcm1UeXBlPiB7XG4gICAgY29uc3QgY29uZmlybUVsID0gYXdhaXQgdGhpcy4jZ2V0Q29uZmlybUVsKCk7XG4gICAgaWYgKGF3YWl0IGNvbmZpcm1FbC5oYXNDbGFzcygnc2t5LWNvbmZpcm0tdHlwZS1vaycpKSB7XG4gICAgICByZXR1cm4gU2t5Q29uZmlybVR5cGUuT0s7XG4gICAgfVxuXG4gICAgcmV0dXJuIFNreUNvbmZpcm1UeXBlLkN1c3RvbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZCBvbiB0aGUgY29uZmlybSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNXaGl0ZVNwYWNlUHJlc2VydmVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRNZXNzYWdlRWwoKVxuICAgICkuaGFzQ2xhc3MoJ3NreS1jb25maXJtLXByZXNlcnZlLXdoaXRlLXNwYWNlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjaGlsZCBoYXJuZXNzZXMuXG4gICAqL1xuICBhc3luYyAjcXVlcnlIYXJuZXNzZXM8VCBleHRlbmRzIENvbXBvbmVudEhhcm5lc3M+KFxuICAgIGhhcm5lc3M6IEhhcm5lc3NRdWVyeTxUPixcbiAgKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yQWxsKGhhcm5lc3MpKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A controller to be injected into tests, which mocks the confirm service
|
|
3
|
+
* and handles interactions with confirm dialogs.
|
|
4
|
+
*/
|
|
5
|
+
export class SkyConfirmTestingController {
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS10ZXN0aW5nLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3Rlc3Rpbmcvc3JjL21vZHVsZXMvY29uZmlybS9jb25maXJtLXRlc3RpbmcuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLDJCQUEyQjtDQXNCaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lDb25maXJtQ2xvc2VFdmVudEFyZ3MsIFNreUNvbmZpcm1Db25maWcgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuLyoqXG4gKiBBIGNvbnRyb2xsZXIgdG8gYmUgaW5qZWN0ZWQgaW50byB0ZXN0cywgd2hpY2ggbW9ja3MgdGhlIGNvbmZpcm0gc2VydmljZVxuICogYW5kIGhhbmRsZXMgaW50ZXJhY3Rpb25zIHdpdGggY29uZmlybSBkaWFsb2dzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2t5Q29uZmlybVRlc3RpbmdDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgY29uZmlybSBkaWFsb2cgd2l0aCB0aGUgXCJjYW5jZWxcIiBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2FuY2VsKCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBUaHJvd3MgaWYgYSBjb25maXJtIGRpYWxvZyBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4cGVjdE5vbmUoKTogdm9pZDtcbiAgLyoqXG4gICAqIFRocm93cyBpZiB0aGUgb3BlbiBjb25maXJtIGRpYWxvZyBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4cGVjdE9wZW4oY29uZmlnOiBTa3lDb25maXJtQ29uZmlnKTogdm9pZDtcbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgY29uZmlybSBkaWFsb2cgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb3NlKGFyZ3M6IFNreUNvbmZpcm1DbG9zZUV2ZW50QXJncyk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGNvbmZpcm0gZGlhbG9nIHdpdGggdGhlIFwib2tcIiBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgb2soKTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
15
15
|
providers: [provideConfirmTesting()],
|
|
16
16
|
}]
|
|
17
17
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS10ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvdGVzdGluZy9zcmMvbW9kdWxlcy9jb25maXJtL2NvbmZpcm0tdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLGFBRnZCLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs7MkZBRXpCLHVCQUF1QjtrQkFIbkMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IHByb3ZpZGVDb25maXJtVGVzdGluZyB9IGZyb20gJy4vcHJvdmlkZS1jb25maXJtLXRlc3RpbmcnO1xuXG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIGBTa3lDb25maXJtVGVzdGluZ0NvbnRyb2xsZXJgIGFzIHRoZSBiYWNrZW5kIGZvciB0aGUgYFNreUNvbmZpcm1TZXJ2aWNlYC5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUNvbmZpcm1UZXN0aW5nKCldLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb25maXJtVGVzdGluZ01vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { SkyConfirmInstance, SkyConfirmType, } from '@skyux/modals';
|
|
2
|
+
import { SkyConfirmTestingController } from './confirm-testing.controller';
|
|
3
|
+
function assertConfirmOpen(value) {
|
|
4
|
+
if (value === undefined) {
|
|
5
|
+
throw new Error('A confirm dialog is expected to be open but is closed.');
|
|
6
|
+
}
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
function assertConfirmClosed(value) {
|
|
10
|
+
if (value !== undefined) {
|
|
11
|
+
throw new Error('A confirm dialog is expected to be closed but is open.');
|
|
12
|
+
}
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
function isButtonConfigArray(val) {
|
|
16
|
+
return (Array.isArray(val) && (val.length === 0 || val[0].action !== undefined));
|
|
17
|
+
}
|
|
18
|
+
function buttonConfigMatches(actual, expected) {
|
|
19
|
+
return (expected.action === actual.action &&
|
|
20
|
+
expected.text === actual.text &&
|
|
21
|
+
expected.styleType === actual.styleType);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export class SkyConfirmTestingService extends SkyConfirmTestingController {
|
|
27
|
+
#testSubject;
|
|
28
|
+
cancel() {
|
|
29
|
+
this.close({ action: 'cancel' });
|
|
30
|
+
}
|
|
31
|
+
ok() {
|
|
32
|
+
this.close({ action: 'ok' });
|
|
33
|
+
}
|
|
34
|
+
close(args) {
|
|
35
|
+
assertConfirmOpen(this.#testSubject);
|
|
36
|
+
const isActionPermitted = this.#testSubject?.buttons.some((b) => b.action === args.action);
|
|
37
|
+
if (isActionPermitted) {
|
|
38
|
+
this.#testSubject.instance.close(args);
|
|
39
|
+
this.#testSubject = undefined;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
throw new Error(`The confirm dialog does not have a button configured for the "${args.action}" action.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
expectNone() {
|
|
46
|
+
assertConfirmClosed(this.#testSubject);
|
|
47
|
+
}
|
|
48
|
+
expectOpen(expectedConfig) {
|
|
49
|
+
assertConfirmOpen(this.#testSubject);
|
|
50
|
+
const actualConfig = this.#testSubject.config;
|
|
51
|
+
for (const [key, expectedValue] of Object.entries(expectedConfig)) {
|
|
52
|
+
const k = key;
|
|
53
|
+
const actualValue = actualConfig[k];
|
|
54
|
+
if (isButtonConfigArray(expectedValue) &&
|
|
55
|
+
isButtonConfigArray(actualValue)) {
|
|
56
|
+
if (expectedValue.length !== actualValue.length)
|
|
57
|
+
throwDetailedError();
|
|
58
|
+
expectedValue.forEach((expectedButton, index) => {
|
|
59
|
+
if (!buttonConfigMatches(expectedButton, actualValue[index])) {
|
|
60
|
+
throwDetailedError();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (actualValue !== expectedValue) {
|
|
65
|
+
throwDetailedError();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function throwDetailedError() {
|
|
69
|
+
throw new Error(`Expected a confirm dialog to be open with a specific configuration.
|
|
70
|
+
Expected:
|
|
71
|
+
${JSON.stringify(expectedConfig, undefined, 2)}
|
|
72
|
+
Actual:
|
|
73
|
+
${JSON.stringify(actualConfig, undefined, 2)}
|
|
74
|
+
`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
open(config) {
|
|
78
|
+
assertConfirmClosed(this.#testSubject);
|
|
79
|
+
const instance = new SkyConfirmInstance();
|
|
80
|
+
const testSubject = {
|
|
81
|
+
buttons: [],
|
|
82
|
+
config,
|
|
83
|
+
instance,
|
|
84
|
+
};
|
|
85
|
+
switch (config.type) {
|
|
86
|
+
case SkyConfirmType.Custom:
|
|
87
|
+
config.buttons?.forEach((b) => {
|
|
88
|
+
testSubject.buttons.push({ action: b.action, text: b.text });
|
|
89
|
+
});
|
|
90
|
+
break;
|
|
91
|
+
case SkyConfirmType.OK:
|
|
92
|
+
default:
|
|
93
|
+
testSubject.buttons.push({ action: 'ok', text: 'Ok' });
|
|
94
|
+
testSubject.buttons.push({ action: 'cancel', text: 'Cancel' });
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
this.#testSubject = testSubject;
|
|
98
|
+
return instance;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS10ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3Rlc3Rpbmcvc3JjL21vZHVsZXMvY29uZmlybS9jb25maXJtLXRlc3Rpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsa0JBQWtCLEVBRWxCLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVEzRSxTQUFTLGlCQUFpQixDQUN4QixLQUE4QjtJQUU5QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELE9BQU87QUFDVCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsS0FBOEI7SUFFOUIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxPQUFPO0FBQ1QsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsR0FBWTtJQUN2QyxPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQ3hFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsTUFBOEIsRUFDOUIsUUFBZ0M7SUFFaEMsT0FBTyxDQUNMLFFBQVEsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU07UUFDakMsUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSTtRQUM3QixR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TyxFQUFFLEVBQUU7WUFDWCxNQUFNO1lBQ04sUUFBUTtTQUNULENBQUM7UUFFRixRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUN4QixNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUM1QixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUVSLEtBQUssY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUN2QjtnQkFDRSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUVoQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTa3lDb25maXJtQnV0dG9uQ29uZmlnLFxuICBTa3lDb25maXJtQ2xvc2VFdmVudEFyZ3MsXG4gIFNreUNvbmZpcm1Db25maWcsXG4gIFNreUNvbmZpcm1JbnN0YW5jZSxcbiAgU2t5Q29uZmlybVNlcnZpY2VJbnRlcmZhY2UsXG4gIFNreUNvbmZpcm1UeXBlLFxufSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHsgU2t5Q29uZmlybVRlc3RpbmdDb250cm9sbGVyIH0gZnJvbSAnLi9jb25maXJtLXRlc3RpbmcuY29udHJvbGxlcic7XG5cbmludGVyZmFjZSBUZXN0U3ViamVjdCB7XG4gIGJ1dHRvbnM6IFNreUNvbmZpcm1CdXR0b25Db25maWdbXTtcbiAgY29uZmlnOiBTa3lDb25maXJtQ29uZmlnO1xuICBpbnN0YW5jZTogU2t5Q29uZmlybUluc3RhbmNlO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRDb25maXJtT3BlbihcbiAgdmFsdWU6IFRlc3RTdWJqZWN0IHwgdW5kZWZpbmVkLFxuKTogYXNzZXJ0cyB2YWx1ZSBpcyBUZXN0U3ViamVjdCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBIGNvbmZpcm0gZGlhbG9nIGlzIGV4cGVjdGVkIHRvIGJlIG9wZW4gYnV0IGlzIGNsb3NlZC4nKTtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0Q29uZmlybUNsb3NlZChcbiAgdmFsdWU6IFRlc3RTdWJqZWN0IHwgdW5kZWZpbmVkLFxuKTogYXNzZXJ0cyB2YWx1ZSBpcyB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQSBjb25maXJtIGRpYWxvZyBpcyBleHBlY3RlZCB0byBiZSBjbG9zZWQgYnV0IGlzIG9wZW4uJyk7XG4gIH1cblxuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIGlzQnV0dG9uQ29uZmlnQXJyYXkodmFsOiB1bmtub3duKTogdmFsIGlzIFNreUNvbmZpcm1CdXR0b25Db25maWdbXSB7XG4gIHJldHVybiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWwpICYmICh2YWwubGVuZ3RoID09PSAwIHx8IHZhbFswXS5hY3Rpb24gIT09IHVuZGVmaW5lZClcbiAgKTtcbn1cblxuZnVuY3Rpb24gYnV0dG9uQ29uZmlnTWF0Y2hlcyhcbiAgYWN0dWFsOiBTa3lDb25maXJtQnV0dG9uQ29uZmlnLFxuICBleHBlY3RlZDogU2t5Q29uZmlybUJ1dHRvbkNvbmZpZyxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGV4cGVjdGVkLmFjdGlvbiA9PT0gYWN0dWFsLmFjdGlvbiAmJlxuICAgIGV4cGVjdGVkLnRleHQgPT09IGFjdHVhbC50ZXh0ICYmXG4gICAgZXhwZWN0ZWQuc3R5bGVUeXBlID09PSBhY3R1YWwuc3R5bGVUeXBlXG4gICk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lDb25maXJtVGVzdGluZ1NlcnZpY2VcbiAgZXh0ZW5kcyBTa3lDb25maXJtVGVzdGluZ0NvbnRyb2xsZXJcbiAgaW1wbGVtZW50cyBTa3lDb25maXJtU2VydmljZUludGVyZmFjZVxue1xuICAjdGVzdFN1YmplY3Q6IFRlc3RTdWJqZWN0IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSh7IGFjdGlvbjogJ2NhbmNlbCcgfSk7XG4gIH1cblxuICBwdWJsaWMgb2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSh7IGFjdGlvbjogJ29rJyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZShhcmdzOiBTa3lDb25maXJtQ2xvc2VFdmVudEFyZ3MpOiB2b2lkIHtcbiAgICBhc3NlcnRDb25maXJtT3Blbih0aGlzLiN0ZXN0U3ViamVjdCk7XG5cbiAgICBjb25zdCBpc0FjdGlvblBlcm1pdHRlZCA9IHRoaXMuI3Rlc3RTdWJqZWN0Py5idXR0b25zLnNvbWUoXG4gICAgICAoYikgPT4gYi5hY3Rpb24gPT09IGFyZ3MuYWN0aW9uLFxuICAgICk7XG5cbiAgICBpZiAoaXNBY3Rpb25QZXJtaXR0ZWQpIHtcbiAgICAgIHRoaXMuI3Rlc3RTdWJqZWN0Lmluc3RhbmNlLmNsb3NlKGFyZ3MpO1xuICAgICAgdGhpcy4jdGVzdFN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBjb25maXJtIGRpYWxvZyBkb2VzIG5vdCBoYXZlIGEgYnV0dG9uIGNvbmZpZ3VyZWQgZm9yIHRoZSBcIiR7YXJncy5hY3Rpb259XCIgYWN0aW9uLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBleHBlY3ROb25lKCk6IHZvaWQge1xuICAgIGFzc2VydENvbmZpcm1DbG9zZWQodGhpcy4jdGVzdFN1YmplY3QpO1xuICB9XG5cbiAgcHVibGljIGV4cGVjdE9wZW4oZXhwZWN0ZWRDb25maWc6IFNreUNvbmZpcm1Db25maWcpOiB2b2lkIHtcbiAgICBhc3NlcnRDb25maXJtT3Blbih0aGlzLiN0ZXN0U3ViamVjdCk7XG5cbiAgICBjb25zdCBhY3R1YWxDb25maWcgPSB0aGlzLiN0ZXN0U3ViamVjdC5jb25maWc7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGV4cGVjdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGV4cGVjdGVkQ29uZmlnKSkge1xuICAgICAgY29uc3QgayA9IGtleSBhcyBrZXlvZiB0eXBlb2YgZXhwZWN0ZWRDb25maWc7XG4gICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbENvbmZpZ1trXTtcblxuICAgICAgaWYgKFxuICAgICAgICBpc0J1dHRvbkNvbmZpZ0FycmF5KGV4cGVjdGVkVmFsdWUpICYmXG4gICAgICAgIGlzQnV0dG9uQ29uZmlnQXJyYXkoYWN0dWFsVmFsdWUpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGV4cGVjdGVkVmFsdWUubGVuZ3RoICE9PSBhY3R1YWxWYWx1ZS5sZW5ndGgpIHRocm93RGV0YWlsZWRFcnJvcigpO1xuXG4gICAgICAgIGV4cGVjdGVkVmFsdWUuZm9yRWFjaCgoZXhwZWN0ZWRCdXR0b24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFidXR0b25Db25maWdNYXRjaGVzKGV4cGVjdGVkQnV0dG9uLCBhY3R1YWxWYWx1ZVtpbmRleF0pKSB7XG4gICAgICAgICAgICB0aHJvd0RldGFpbGVkRXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChhY3R1YWxWYWx1ZSAhPT0gZXhwZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aHJvd0RldGFpbGVkRXJyb3IoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0aHJvd0RldGFpbGVkRXJyb3IoKTogbmV2ZXIge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGNvbmZpcm0gZGlhbG9nIHRvIGJlIG9wZW4gd2l0aCBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uXG5FeHBlY3RlZDpcbiR7SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRDb25maWcsIHVuZGVmaW5lZCwgMil9XG5BY3R1YWw6XG4ke0pTT04uc3RyaW5naWZ5KGFjdHVhbENvbmZpZywgdW5kZWZpbmVkLCAyKX1cbmApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuKGNvbmZpZzogU2t5Q29uZmlybUNvbmZpZyk6IFNreUNvbmZpcm1JbnN0YW5jZSB7XG4gICAgYXNzZXJ0Q29uZmlybUNsb3NlZCh0aGlzLiN0ZXN0U3ViamVjdCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTa3lDb25maXJtSW5zdGFuY2UoKTtcbiAgICBjb25zdCB0ZXN0U3ViamVjdDogVGVzdFN1YmplY3QgPSB7XG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGluc3RhbmNlLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKGNvbmZpZy50eXBlKSB7XG4gICAgICBjYXNlIFNreUNvbmZpcm1UeXBlLkN1c3RvbTpcbiAgICAgICAgY29uZmlnLmJ1dHRvbnM/LmZvckVhY2goKGIpID0+IHtcbiAgICAgICAgICB0ZXN0U3ViamVjdC5idXR0b25zLnB1c2goeyBhY3Rpb246IGIuYWN0aW9uLCB0ZXh0OiBiLnRleHQgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lDb25maXJtVHlwZS5PSzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRlc3RTdWJqZWN0LmJ1dHRvbnMucHVzaCh7IGFjdGlvbjogJ29rJywgdGV4dDogJ09rJyB9KTtcbiAgICAgICAgdGVzdFN1YmplY3QuYnV0dG9ucy5wdXNoKHsgYWN0aW9uOiAnY2FuY2VsJywgdGV4dDogJ0NhbmNlbCcgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuI3Rlc3RTdWJqZWN0ID0gdGVzdFN1YmplY3Q7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SkyConfirmService } from '@skyux/modals';
|
|
2
|
+
import { SkyConfirmTestingController } from './confirm-testing.controller';
|
|
3
|
+
import { SkyConfirmTestingService } from './confirm-testing.service';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export function provideConfirmTesting() {
|
|
8
|
+
return [
|
|
9
|
+
SkyConfirmTestingService,
|
|
10
|
+
{
|
|
11
|
+
provide: SkyConfirmService,
|
|
12
|
+
useExisting: SkyConfirmTestingService,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
provide: SkyConfirmTestingController,
|
|
16
|
+
useExisting: SkyConfirmTestingService,
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maXJtLXRlc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3Rlc3Rpbmcvc3JjL21vZHVsZXMvY29uZmlybS9wcm92aWRlLWNvbmZpcm0tdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckU7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU87UUFDTCx3QkFBd0I7UUFDeEI7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSx3QkFBd0I7U0FDdEM7UUFDRDtZQUNFLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsV0FBVyxFQUFFLHdCQUF3QjtTQUN0QztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUNvbmZpcm1TZXJ2aWNlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5cbmltcG9ydCB7IFNreUNvbmZpcm1UZXN0aW5nQ29udHJvbGxlciB9IGZyb20gJy4vY29uZmlybS10ZXN0aW5nLmNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2t5Q29uZmlybVRlc3RpbmdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maXJtLXRlc3Rpbmcuc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29uZmlybVRlc3RpbmcoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAgU2t5Q29uZmlybVRlc3RpbmdTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNreUNvbmZpcm1TZXJ2aWNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreUNvbmZpcm1UZXN0aW5nU2VydmljZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNreUNvbmZpcm1UZXN0aW5nQ29udHJvbGxlcixcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lDb25maXJtVGVzdGluZ1NlcnZpY2UsXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A controller to be injected into tests, which mocks the modal service
|
|
3
|
+
* and handles interactions with modal instances. For testing interactions
|
|
4
|
+
* with the modal component itself, use the `SkyModalHarness`.
|
|
5
|
+
*/
|
|
6
|
+
export class SkyModalTestingController {
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdGVzdGluZy5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy90ZXN0aW5nL3NyYy9tb2R1bGVzL21vZGFsL2NvbnRyb2xsZXIvbW9kYWwtdGVzdGluZy5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLHlCQUF5QjtDQXFCOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lNb2RhbENsb3NlQXJncyB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG4vKipcbiAqIEEgY29udHJvbGxlciB0byBiZSBpbmplY3RlZCBpbnRvIHRlc3RzLCB3aGljaCBtb2NrcyB0aGUgbW9kYWwgc2VydmljZVxuICogYW5kIGhhbmRsZXMgaW50ZXJhY3Rpb25zIHdpdGggbW9kYWwgaW5zdGFuY2VzLiBGb3IgdGVzdGluZyBpbnRlcmFjdGlvbnNcbiAqIHdpdGggdGhlIG1vZGFsIGNvbXBvbmVudCBpdHNlbGYsIHVzZSB0aGUgYFNreU1vZGFsSGFybmVzc2AuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTa3lNb2RhbFRlc3RpbmdDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgdG9wbW9zdCBtb2RhbCB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtb2RhbCdzIGNsb3NlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb3NlVG9wTW9kYWwoYXJncz86IFNreU1vZGFsQ2xvc2VBcmdzKTogdm9pZDtcblxuICAvKipcbiAgICogVGhyb3dzIGlmIHRoZSBwcm92aWRlZCB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIG9wZW4gbW9kYWxzLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4cGVjdENvdW50KHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaHJvd3MgaWYgbW9kYWxzIGFyZSBvcGVuLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4cGVjdE5vbmUoKTogdm9pZDtcblxuICAvKipcbiAgICogVGhyb3dzIGlmIHRoZSBnaXZlbiBjcml0ZXJpYSBkb2VzIG5vdCBtYXRjaCB0aGUgdG9wbW9zdCBvcGVuIG1vZGFsLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4cGVjdE9wZW48VENvbXBvbmVudD4oY29tcG9uZW50OiBUeXBlPFRDb21wb25lbnQ+KTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
15
15
|
providers: [provideModalTesting()],
|
|
16
16
|
}]
|
|
17
17
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3Rlc3Rpbmcvc3JjL21vZHVsZXMvbW9kYWwvY29udHJvbGxlci9tb2RhbC10ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUU5RDs7R0FFRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7OEdBQXJCLHFCQUFxQjsrR0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsYUFGckIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDOzsyRkFFdkIscUJBQXFCO2tCQUhqQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgcHJvdmlkZU1vZGFsVGVzdGluZyB9IGZyb20gJy4vcHJvdmlkZS1tb2RhbC10ZXN0aW5nJztcblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBgU2t5TW9kYWxUZXN0aW5nQ29udHJvbGxlcmAgYXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgYFNreU1vZGFsU2VydmljZWAuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW3Byb3ZpZGVNb2RhbFRlc3RpbmcoKV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsVGVzdGluZ01vZHVsZSB7fVxuIl19
|