@skyux/modals 8.6.0 → 9.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +4 -4
- package/esm2022/lib/modules/confirm/confirm.component.mjs +112 -0
- package/{esm2020 → esm2022}/lib/modules/confirm/confirm.module.mjs +13 -13
- package/esm2022/lib/modules/confirm/confirm.service.mjs +54 -0
- package/esm2022/lib/modules/modal/modal-adapter.service.mjs +99 -0
- package/esm2022/lib/modules/modal/modal-component-adapter.service.mjs +101 -0
- package/{esm2020 → esm2022}/lib/modules/modal/modal-configuration.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/modal/modal-content.component.mjs +4 -4
- package/esm2022/lib/modules/modal/modal-errors.service.mjs +21 -0
- package/{esm2020 → esm2022}/lib/modules/modal/modal-footer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/modal/modal-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/modal/modal-host-context.mjs +4 -4
- package/esm2022/lib/modules/modal/modal-host.component.mjs +163 -0
- package/esm2022/lib/modules/modal/modal-host.service.mjs +62 -0
- package/esm2022/lib/modules/modal/modal-instance.mjs +123 -0
- package/esm2022/lib/modules/modal/modal-is-dirty.directive.mjs +94 -0
- package/esm2022/lib/modules/modal/modal-scroll-shadow.directive.mjs +129 -0
- package/esm2022/lib/modules/modal/modal.component.mjs +229 -0
- package/{esm2020 → esm2022}/lib/modules/modal/modal.module.mjs +29 -29
- package/esm2022/lib/modules/modal/modal.service.mjs +97 -0
- package/esm2022/lib/modules/shared/sky-modals-resources.module.mjs +61 -0
- package/esm2022/testing/confirm/confirm-button-harness.mjs +46 -0
- package/esm2022/testing/confirm/confirm-harness.mjs +90 -0
- package/esm2022/testing/modal/modal-harness.mjs +75 -0
- package/esm2022/testing/modal-fixture.mjs +143 -0
- package/{fesm2020 → fesm2022}/skyux-modals-testing.mjs +60 -73
- package/{fesm2020 → fesm2022}/skyux-modals-testing.mjs.map +1 -1
- package/fesm2022/skyux-modals.mjs +1502 -0
- package/{fesm2015 → fesm2022}/skyux-modals.mjs.map +1 -1
- package/lib/modules/modal/modal-is-dirty.directive.d.ts +1 -1
- package/lib/modules/modal/modal.component.d.ts +1 -1
- package/package.json +16 -24
- package/esm2020/lib/modules/confirm/confirm.component.mjs +0 -114
- package/esm2020/lib/modules/confirm/confirm.service.mjs +0 -57
- package/esm2020/lib/modules/modal/modal-adapter.service.mjs +0 -101
- package/esm2020/lib/modules/modal/modal-component-adapter.service.mjs +0 -104
- package/esm2020/lib/modules/modal/modal-errors.service.mjs +0 -24
- package/esm2020/lib/modules/modal/modal-host.component.mjs +0 -164
- package/esm2020/lib/modules/modal/modal-host.service.mjs +0 -65
- package/esm2020/lib/modules/modal/modal-instance.mjs +0 -127
- package/esm2020/lib/modules/modal/modal-is-dirty.directive.mjs +0 -93
- package/esm2020/lib/modules/modal/modal-scroll-shadow.directive.mjs +0 -127
- package/esm2020/lib/modules/modal/modal.component.mjs +0 -228
- package/esm2020/lib/modules/modal/modal.service.mjs +0 -99
- package/esm2020/lib/modules/shared/sky-modals-resources.module.mjs +0 -61
- package/esm2020/testing/confirm/confirm-button-harness.mjs +0 -46
- package/esm2020/testing/confirm/confirm-harness.mjs +0 -97
- package/esm2020/testing/modal/modal-harness.mjs +0 -81
- package/esm2020/testing/modal-fixture.mjs +0 -145
- package/fesm2015/skyux-modals-testing.mjs +0 -409
- package/fesm2015/skyux-modals-testing.mjs.map +0 -1
- package/fesm2015/skyux-modals.mjs +0 -1522
- package/fesm2020/skyux-modals.mjs +0 -1510
- package/fesm2020/skyux-modals.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button-action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button-style-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-button.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-closed-event-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-config-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/confirm/confirm-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-before-close-handler.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-close-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-host-context-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal-scroll-shadow-event-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/modal/modal.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-modals.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/confirm/confirm-button-harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/modal/modal-harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-modals-testing.mjs +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SkyModalHostContext } from './modal-host-context';
|
|
3
|
+
import { SkyModalHostComponent } from './modal-host.component';
|
|
4
|
+
import { SkyModalInstance } from './modal-instance';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@skyux/core";
|
|
7
|
+
/**
|
|
8
|
+
* A service that launches modals.
|
|
9
|
+
* @dynamic
|
|
10
|
+
*/
|
|
11
|
+
export class SkyModalService {
|
|
12
|
+
#dynamicComponentService;
|
|
13
|
+
constructor(dynamicComponentService) {
|
|
14
|
+
this.#dynamicComponentService = dynamicComponentService;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
* Removes the modal host from the DOM.
|
|
19
|
+
*/
|
|
20
|
+
dispose() {
|
|
21
|
+
if (SkyModalService.host) {
|
|
22
|
+
this.#dynamicComponentService.removeComponent(SkyModalService.host);
|
|
23
|
+
SkyModalService.host = undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Opens a modal using the specified component.
|
|
28
|
+
* @param component Determines the component to render.
|
|
29
|
+
* @param {SkyModalConfigurationInterface} config Specifies configuration options for the modal.
|
|
30
|
+
*/
|
|
31
|
+
open(component, config) {
|
|
32
|
+
const modalInstance = new SkyModalInstance();
|
|
33
|
+
this.#createHostComponent();
|
|
34
|
+
const params = this.#getConfigFromParameter(config);
|
|
35
|
+
params.providers ||= [];
|
|
36
|
+
params.providers.push({
|
|
37
|
+
provide: SkyModalInstance,
|
|
38
|
+
useValue: modalInstance,
|
|
39
|
+
});
|
|
40
|
+
if (SkyModalService.host) {
|
|
41
|
+
SkyModalService.host.instance.open(modalInstance, component, params);
|
|
42
|
+
}
|
|
43
|
+
return modalInstance;
|
|
44
|
+
}
|
|
45
|
+
#getConfigFromParameter(providersOrConfig) {
|
|
46
|
+
const defaultParams = {
|
|
47
|
+
providers: [],
|
|
48
|
+
fullPage: false,
|
|
49
|
+
size: 'medium',
|
|
50
|
+
tiledBody: false,
|
|
51
|
+
};
|
|
52
|
+
let params = {};
|
|
53
|
+
let method = undefined;
|
|
54
|
+
// Object Literal Lookup for backwards compatibility.
|
|
55
|
+
method = {
|
|
56
|
+
'providers?': Object.assign({}, defaultParams, {
|
|
57
|
+
providers: providersOrConfig,
|
|
58
|
+
}),
|
|
59
|
+
config: Object.assign({}, defaultParams, providersOrConfig),
|
|
60
|
+
};
|
|
61
|
+
if (Array.isArray(providersOrConfig) === true) {
|
|
62
|
+
params = method['providers?'];
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
params = method['config'];
|
|
66
|
+
}
|
|
67
|
+
return params;
|
|
68
|
+
}
|
|
69
|
+
#createHostComponent() {
|
|
70
|
+
if (!SkyModalService.host) {
|
|
71
|
+
SkyModalService.host = this.#dynamicComponentService.createComponent(SkyModalHostComponent, {
|
|
72
|
+
providers: [
|
|
73
|
+
{
|
|
74
|
+
provide: SkyModalHostContext,
|
|
75
|
+
useValue: new SkyModalHostContext({
|
|
76
|
+
teardownCallback: () => {
|
|
77
|
+
this.dispose();
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalService, deps: [{ token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
86
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalService, providedIn: 'any' }); }
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalService, decorators: [{
|
|
89
|
+
type: Injectable,
|
|
90
|
+
args: [{
|
|
91
|
+
// Must be 'any' so that the modal component is created in the context of its module's injector.
|
|
92
|
+
// If set to 'root', the component's dependency injections would only be derived from the root
|
|
93
|
+
// injector and may lose context if the modal was opened from within a lazy-loaded module.
|
|
94
|
+
providedIn: 'any',
|
|
95
|
+
}]
|
|
96
|
+
}], ctorParameters: function () { return [{ type: i1.SkyDynamicComponentService }]; } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUdwRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sZUFBZTtJQUcxQix3QkFBd0IsQ0FBNkI7SUFFckQsWUFBWSx1QkFBbUQ7UUFDN0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDO0lBQzFELENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxJQUFJLENBQ1QsU0FBYyxFQUNkLE1BQStDO1FBRS9DLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDcEIsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixRQUFRLEVBQUUsYUFBYTtTQUN4QixDQUFDLENBQUM7UUFFSCxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDdEU7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsdUJBQXVCLENBQ3JCLGlCQUFzQjtRQUV0QixNQUFNLGFBQWEsR0FBbUM7WUFDcEQsU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztRQUNGLElBQUksTUFBTSxHQUFtQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxNQUFNLEdBQVEsU0FBUyxDQUFDO1FBRTVCLHFEQUFxRDtRQUNyRCxNQUFNLEdBQUc7WUFDUCxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFO2dCQUM3QyxTQUFTLEVBQUUsaUJBQWlCO2FBQzdCLENBQUM7WUFDRixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDO1NBQzVELENBQUM7UUFFRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDN0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDekIsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxDQUNsRSxxQkFBcUIsRUFDckI7Z0JBQ0UsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7d0JBQzVCLFFBQVEsRUFBRSxJQUFJLG1CQUFtQixDQUFDOzRCQUNoQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7Z0NBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDakIsQ0FBQzt5QkFDRixDQUFDO3FCQUNIO2lCQUNGO2FBQ0YsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDOzhHQTdGVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxLQUFLOzsyRkFFTixlQUFlO2tCQU4zQixVQUFVO21CQUFDO29CQUNWLGdHQUFnRztvQkFDaEcsOEZBQThGO29CQUM5RiwwRkFBMEY7b0JBQzFGLFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreU1vZGFsSG9zdENvbnRleHQgfSBmcm9tICcuL21vZGFsLWhvc3QtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lNb2RhbEhvc3RDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UgfSBmcm9tICcuL21vZGFsLWluc3RhbmNlJztcbmltcG9ydCB7IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSB9IGZyb20gJy4vbW9kYWwuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCBsYXVuY2hlcyBtb2RhbHMuXG4gKiBAZHluYW1pY1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIC8vIE11c3QgYmUgJ2FueScgc28gdGhhdCB0aGUgbW9kYWwgY29tcG9uZW50IGlzIGNyZWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgaXRzIG1vZHVsZSdzIGluamVjdG9yLlxuICAvLyBJZiBzZXQgdG8gJ3Jvb3QnLCB0aGUgY29tcG9uZW50J3MgZGVwZW5kZW5jeSBpbmplY3Rpb25zIHdvdWxkIG9ubHkgYmUgZGVyaXZlZCBmcm9tIHRoZSByb290XG4gIC8vIGluamVjdG9yIGFuZCBtYXkgbG9zZSBjb250ZXh0IGlmIHRoZSBtb2RhbCB3YXMgb3BlbmVkIGZyb20gd2l0aGluIGEgbGF6eS1sb2FkZWQgbW9kdWxlLlxuICBwcm92aWRlZEluOiAnYW55Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TW9kYWxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaG9zdDogQ29tcG9uZW50UmVmPFNreU1vZGFsSG9zdENvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihkeW5hbWljQ29tcG9uZW50U2VydmljZTogU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UpIHtcbiAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZSA9IGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZW1vdmVzIHRoZSBtb2RhbCBob3N0IGZyb20gdGhlIERPTS5cbiAgICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmIChTa3lNb2RhbFNlcnZpY2UuaG9zdCkge1xuICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KFNreU1vZGFsU2VydmljZS5ob3N0KTtcbiAgICAgIFNreU1vZGFsU2VydmljZS5ob3N0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIG1vZGFsIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gY29tcG9uZW50IERldGVybWluZXMgdGhlIGNvbXBvbmVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB7U2t5TW9kYWxDb25maWd1cmF0aW9uSW50ZXJmYWNlfSBjb25maWcgU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZGFsLlxuICAgKi9cbiAgcHVibGljIG9wZW4oXG4gICAgY29tcG9uZW50OiBhbnksXG4gICAgY29uZmlnPzogU2t5TW9kYWxDb25maWd1cmF0aW9uSW50ZXJmYWNlIHwgYW55W11cbiAgKTogU2t5TW9kYWxJbnN0YW5jZSB7XG4gICAgY29uc3QgbW9kYWxJbnN0YW5jZSA9IG5ldyBTa3lNb2RhbEluc3RhbmNlKCk7XG4gICAgdGhpcy4jY3JlYXRlSG9zdENvbXBvbmVudCgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuI2dldENvbmZpZ0Zyb21QYXJhbWV0ZXIoY29uZmlnKTtcblxuICAgIHBhcmFtcy5wcm92aWRlcnMgfHw9IFtdO1xuICAgIHBhcmFtcy5wcm92aWRlcnMucHVzaCh7XG4gICAgICBwcm92aWRlOiBTa3lNb2RhbEluc3RhbmNlLFxuICAgICAgdXNlVmFsdWU6IG1vZGFsSW5zdGFuY2UsXG4gICAgfSk7XG5cbiAgICBpZiAoU2t5TW9kYWxTZXJ2aWNlLmhvc3QpIHtcbiAgICAgIFNreU1vZGFsU2VydmljZS5ob3N0Lmluc3RhbmNlLm9wZW4obW9kYWxJbnN0YW5jZSwgY29tcG9uZW50LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RhbEluc3RhbmNlO1xuICB9XG5cbiAgI2dldENvbmZpZ0Zyb21QYXJhbWV0ZXIoXG4gICAgcHJvdmlkZXJzT3JDb25maWc6IGFueVxuICApOiBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2Uge1xuICAgIGNvbnN0IGRlZmF1bHRQYXJhbXM6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSA9IHtcbiAgICAgIHByb3ZpZGVyczogW10sXG4gICAgICBmdWxsUGFnZTogZmFsc2UsXG4gICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgIHRpbGVkQm9keTogZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgcGFyYW1zOiBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2UgPSB7fTtcbiAgICBsZXQgbWV0aG9kOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPYmplY3QgTGl0ZXJhbCBMb29rdXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAgIG1ldGhvZCA9IHtcbiAgICAgICdwcm92aWRlcnM/JzogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFBhcmFtcywge1xuICAgICAgICBwcm92aWRlcnM6IHByb3ZpZGVyc09yQ29uZmlnLFxuICAgICAgfSksXG4gICAgICBjb25maWc6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRQYXJhbXMsIHByb3ZpZGVyc09yQ29uZmlnKSxcbiAgICB9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvdmlkZXJzT3JDb25maWcpID09PSB0cnVlKSB7XG4gICAgICBwYXJhbXMgPSBtZXRob2RbJ3Byb3ZpZGVycz8nXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zID0gbWV0aG9kWydjb25maWcnXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgI2NyZWF0ZUhvc3RDb21wb25lbnQoKTogdm9pZCB7XG4gICAgaWYgKCFTa3lNb2RhbFNlcnZpY2UuaG9zdCkge1xuICAgICAgU2t5TW9kYWxTZXJ2aWNlLmhvc3QgPSB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIFNreU1vZGFsSG9zdENvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcm92aWRlOiBTa3lNb2RhbEhvc3RDb250ZXh0LFxuICAgICAgICAgICAgICB1c2VWYWx1ZTogbmV3IFNreU1vZGFsSG9zdENvbnRleHQoe1xuICAgICAgICAgICAgICAgIHRlYXJkb3duQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
3
|
+
* The contents of this file were automatically generated by
|
|
4
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-modals' schematic.
|
|
5
|
+
* To update this file, simply rerun the command.
|
|
6
|
+
*/
|
|
7
|
+
import { NgModule } from '@angular/core';
|
|
8
|
+
import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, getLibStringForLocale, } from '@skyux/i18n';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
const RESOURCES = {
|
|
11
|
+
'EN-US': {
|
|
12
|
+
skyux_confirm_dialog_default_ok_text: { message: 'OK' },
|
|
13
|
+
skyux_confirm_dialog_default_yes_text: { message: 'Yes' },
|
|
14
|
+
skyux_confirm_dialog_default_no_text: { message: 'No' },
|
|
15
|
+
skyux_confirm_dialog_default_cancel_text: { message: 'Cancel' },
|
|
16
|
+
skyux_modal_close: { message: 'Close modal' },
|
|
17
|
+
skyux_modal_open_help: { message: 'Open Help' },
|
|
18
|
+
skyux_modal_footer_cancel_button: { message: 'Cancel' },
|
|
19
|
+
skyux_modal_footer_primary_button: { message: 'Save' },
|
|
20
|
+
skyux_modal_dirty_default_message: {
|
|
21
|
+
message: 'Are you sure you want to discard your changes?',
|
|
22
|
+
},
|
|
23
|
+
skyux_modal_dirty_default_discard_changes_text: {
|
|
24
|
+
message: 'Discard changes',
|
|
25
|
+
},
|
|
26
|
+
skyux_modal_dirty_default_keep_working_text: { message: 'Keep working' },
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
export class SkyModalsResourcesProvider {
|
|
30
|
+
getString(localeInfo, name) {
|
|
31
|
+
return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Import into any component library module that needs to use resource strings.
|
|
36
|
+
*/
|
|
37
|
+
export class SkyModalsResourcesModule {
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
39
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyModalsResourcesModule, exports: [SkyI18nModule] }); }
|
|
40
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalsResourcesModule, providers: [
|
|
41
|
+
{
|
|
42
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
43
|
+
useClass: SkyModalsResourcesProvider,
|
|
44
|
+
multi: true,
|
|
45
|
+
},
|
|
46
|
+
], imports: [SkyI18nModule] }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalsResourcesModule, decorators: [{
|
|
49
|
+
type: NgModule,
|
|
50
|
+
args: [{
|
|
51
|
+
exports: [SkyI18nModule],
|
|
52
|
+
providers: [
|
|
53
|
+
{
|
|
54
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
55
|
+
useClass: SkyModalsResourcesProvider,
|
|
56
|
+
multi: true,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
}]
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LW1vZGFscy1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1tb2RhbHMtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1Asb0NBQW9DLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO1FBQ3ZELHFDQUFxQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtRQUN6RCxvQ0FBb0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDdkQsd0NBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQy9ELGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtRQUM3QyxxQkFBcUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7UUFDL0MsZ0NBQWdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQ3ZELGlDQUFpQyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUN0RCxpQ0FBaUMsRUFBRTtZQUNqQyxPQUFPLEVBQUUsZ0RBQWdEO1NBQzFEO1FBQ0QsOENBQThDLEVBQUU7WUFDOUMsT0FBTyxFQUFFLGlCQUFpQjtTQUMzQjtRQUNELDJDQUEyQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtLQUN6RTtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sMEJBQTBCO0lBQzlCLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLFlBVHpCLGFBQWE7K0dBU1osd0JBQXdCLGFBUnhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLFlBUFMsYUFBYTs7MkZBU1osd0JBQXdCO2tCQVZwQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSwwQkFBMEI7NEJBQ3BDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktbW9kYWxzJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIGdldExpYlN0cmluZ0ZvckxvY2FsZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IHsgW2xvY2FsZTogc3RyaW5nXTogU2t5TGliUmVzb3VyY2VzIH0gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9jb25maXJtX2RpYWxvZ19kZWZhdWx0X29rX3RleHQ6IHsgbWVzc2FnZTogJ09LJyB9LFxuICAgIHNreXV4X2NvbmZpcm1fZGlhbG9nX2RlZmF1bHRfeWVzX3RleHQ6IHsgbWVzc2FnZTogJ1llcycgfSxcbiAgICBza3l1eF9jb25maXJtX2RpYWxvZ19kZWZhdWx0X25vX3RleHQ6IHsgbWVzc2FnZTogJ05vJyB9LFxuICAgIHNreXV4X2NvbmZpcm1fZGlhbG9nX2RlZmF1bHRfY2FuY2VsX3RleHQ6IHsgbWVzc2FnZTogJ0NhbmNlbCcgfSxcbiAgICBza3l1eF9tb2RhbF9jbG9zZTogeyBtZXNzYWdlOiAnQ2xvc2UgbW9kYWwnIH0sXG4gICAgc2t5dXhfbW9kYWxfb3Blbl9oZWxwOiB7IG1lc3NhZ2U6ICdPcGVuIEhlbHAnIH0sXG4gICAgc2t5dXhfbW9kYWxfZm9vdGVyX2NhbmNlbF9idXR0b246IHsgbWVzc2FnZTogJ0NhbmNlbCcgfSxcbiAgICBza3l1eF9tb2RhbF9mb290ZXJfcHJpbWFyeV9idXR0b246IHsgbWVzc2FnZTogJ1NhdmUnIH0sXG4gICAgc2t5dXhfbW9kYWxfZGlydHlfZGVmYXVsdF9tZXNzYWdlOiB7XG4gICAgICBtZXNzYWdlOiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBjaGFuZ2VzPycsXG4gICAgfSxcbiAgICBza3l1eF9tb2RhbF9kaXJ0eV9kZWZhdWx0X2Rpc2NhcmRfY2hhbmdlc190ZXh0OiB7XG4gICAgICBtZXNzYWdlOiAnRGlzY2FyZCBjaGFuZ2VzJyxcbiAgICB9LFxuICAgIHNreXV4X21vZGFsX2RpcnR5X2RlZmF1bHRfa2VlcF93b3JraW5nX3RleHQ6IHsgbWVzc2FnZTogJ0tlZXAgd29ya2luZycgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lNb2RhbHNSZXNvdXJjZXNQcm92aWRlciBpbXBsZW1lbnRzIFNreUxpYlJlc291cmNlc1Byb3ZpZGVyIHtcbiAgcHVibGljIGdldFN0cmluZyhcbiAgICBsb2NhbGVJbmZvOiBTa3lBcHBMb2NhbGVJbmZvLFxuICAgIG5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRMaWJTdHJpbmdGb3JMb2NhbGUoUkVTT1VSQ0VTLCBsb2NhbGVJbmZvLmxvY2FsZSwgbmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU0tZX0xJQl9SRVNPVVJDRVNfUFJPVklERVJTLFxuICAgICAgdXNlQ2xhc3M6IFNreU1vZGFsc1Jlc291cmNlc1Byb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TW9kYWxzUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
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) => HarnessPredicate.stringMatches(await harness.getText(), text))
|
|
15
|
+
.addOption('styleType', filters.styleType, async (harness, styleType) => HarnessPredicate.stringMatches(await harness.getStyleType(), styleType));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Clicks the confirm button.
|
|
19
|
+
*/
|
|
20
|
+
async click() {
|
|
21
|
+
return (await this.host()).click();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Gets the button style of the confirm button.
|
|
25
|
+
*/
|
|
26
|
+
async getStyleType() {
|
|
27
|
+
const hostEl = await this.host();
|
|
28
|
+
if (await hostEl.hasClass('sky-btn-primary')) {
|
|
29
|
+
return 'primary';
|
|
30
|
+
}
|
|
31
|
+
else if (await hostEl.hasClass('sky-btn-link')) {
|
|
32
|
+
return 'link';
|
|
33
|
+
}
|
|
34
|
+
else if (await hostEl.hasClass('sky-btn-danger')) {
|
|
35
|
+
return 'danger';
|
|
36
|
+
}
|
|
37
|
+
return 'default';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the text content of the confirm button.
|
|
41
|
+
*/
|
|
42
|
+
async getText() {
|
|
43
|
+
return (await this.host()).text();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1idXR0b24taGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvdGVzdGluZy9zcmMvY29uZmlybS9jb25maXJtLWJ1dHRvbi1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSzFFOzs7R0FHRztBQUNILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7YUFDN0MsaUJBQVksR0FBRywrQkFBK0IsQ0FBQztJQUU3RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUF1QztRQUV2QyxPQUFPLElBQUksZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDO2FBQzFELFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ3ZELGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FDOUQ7YUFDQSxTQUFTLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUN0RSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQ3hFLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBSztRQUNoQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxJQUFJLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNLElBQUksTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDbEQsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcywgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbmZpcm1CdXR0b25TdHlsZVR5cGUgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHsgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9jb25maXJtLWJ1dHRvbi1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBjb25maXJtIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3MgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzIHtcbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnLnNreS1jb25maXJtLWJ1dHRvbnMgLnNreS1idG4nO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lDb25maXJtQnV0dG9uSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUNvbmZpcm1CdXR0b25IYXJuZXNzRmlsdGVyc1xuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUNvbmZpcm1CdXR0b25IYXJuZXNzPiB7XG4gICAgcmV0dXJuIG5ldyBIYXJuZXNzUHJlZGljYXRlKFNreUNvbmZpcm1CdXR0b25IYXJuZXNzLCBmaWx0ZXJzKVxuICAgICAgLmFkZE9wdGlvbigndGV4dCcsIGZpbHRlcnMudGV4dCwgYXN5bmMgKGhhcm5lc3MsIHRleHQpID0+XG4gICAgICAgIEhhcm5lc3NQcmVkaWNhdGUuc3RyaW5nTWF0Y2hlcyhhd2FpdCBoYXJuZXNzLmdldFRleHQoKSwgdGV4dClcbiAgICAgIClcbiAgICAgIC5hZGRPcHRpb24oJ3N0eWxlVHlwZScsIGZpbHRlcnMuc3R5bGVUeXBlLCBhc3luYyAoaGFybmVzcywgc3R5bGVUeXBlKSA9PlxuICAgICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoYXdhaXQgaGFybmVzcy5nZXRTdHlsZVR5cGUoKSwgc3R5bGVUeXBlKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGNvbmZpcm0gYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYnV0dG9uIHN0eWxlIG9mIHRoZSBjb25maXJtIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTdHlsZVR5cGUoKTogUHJvbWlzZTxTa3lDb25maXJtQnV0dG9uU3R5bGVUeXBlPiB7XG4gICAgY29uc3QgaG9zdEVsID0gYXdhaXQgdGhpcy5ob3N0KCk7XG5cbiAgICBpZiAoYXdhaXQgaG9zdEVsLmhhc0NsYXNzKCdza3ktYnRuLXByaW1hcnknKSkge1xuICAgICAgcmV0dXJuICdwcmltYXJ5JztcbiAgICB9IGVsc2UgaWYgKGF3YWl0IGhvc3RFbC5oYXNDbGFzcygnc2t5LWJ0bi1saW5rJykpIHtcbiAgICAgIHJldHVybiAnbGluayc7XG4gICAgfSBlbHNlIGlmIChhd2FpdCBob3N0RWwuaGFzQ2xhc3MoJ3NreS1idG4tZGFuZ2VyJykpIHtcbiAgICAgIHJldHVybiAnZGFuZ2VyJztcbiAgICB9XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGNvbmZpcm0gYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaG9zdCgpKS50ZXh0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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 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 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 this.#getMessageEl()).hasClass('sky-confirm-preserve-white-space');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns child harnesses.
|
|
85
|
+
*/
|
|
86
|
+
async #queryHarnesses(harness) {
|
|
87
|
+
return this.locatorForAll(harness)();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy90ZXN0aW5nL3NyYy9jb25maXJtL2NvbmZpcm0taGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR25FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUFtQjthQUMxQyxpQkFBWSxHQUFHLGFBQWEsQ0FBQztJQUUzQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDMUQsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxRCxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXhEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQixDQUM1QixPQUF1QztRQUV2QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLElBQUksT0FBTyxDQUFDLElBQUksWUFBWSxNQUFNLEVBQUU7Z0JBQ2xDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN4QztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsK0NBQStDLElBQUksQ0FBQyxTQUFTLENBQzNELE9BQU8sQ0FDUixHQUFHLENBQ0wsQ0FBQztTQUNIO1FBQ0QsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGFBQWE7UUFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbEMsSUFBSSxJQUFJLEtBQUssY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7U0FDeEU7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQzNCLE9BQXdDO1FBRXhDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpDLElBQUksV0FBVyxLQUFLLGNBQWMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUMxQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUM1QyxDQUFDO1FBRUYsSUFBSSxPQUFPLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckMsNkVBQTZFO1lBQzdFLElBQUksT0FBTyxDQUFDLElBQUksWUFBWSxNQUFNLEVBQUU7Z0JBQ2xDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN4QztZQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IsOENBQThDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDekUsQ0FBQztTQUNIO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0MsSUFBSSxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUNuRCxPQUFPLGNBQWMsQ0FBQyxFQUFFLENBQUM7U0FDMUI7UUFFRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQjtRQUNoQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQzFDLGtDQUFrQyxDQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBd0I7UUFFeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEhhcm5lc3MsIEhhcm5lc3NRdWVyeSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbmZpcm1UeXBlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5cbmltcG9ydCB7IFNreUNvbmZpcm1CdXR0b25IYXJuZXNzIH0gZnJvbSAnLi9jb25maXJtLWJ1dHRvbi1oYXJuZXNzJztcbmltcG9ydCB7IFNreUNvbmZpcm1CdXR0b25IYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vY29uZmlybS1idXR0b24taGFybmVzcy1maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgY29uZmlybSBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lDb25maXJtSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktY29uZmlybSc7XG5cbiAgI2dldEJvZHlFbCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LWNvbmZpcm0tYm9keScpO1xuICAjZ2V0QnV0dG9ucyA9IHRoaXMubG9jYXRvckZvckFsbChTa3lDb25maXJtQnV0dG9uSGFybmVzcyk7XG4gICNnZXRDb25maXJtRWwgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktY29uZmlybScpO1xuICAjZ2V0TWVzc2FnZUVsID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNvbmZpcm0tbWVzc2FnZScpO1xuXG4gIC8qKlxuICAgKiBDbGlja3MgYSBjb25maXJtIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0N1c3RvbUJ1dHRvbihcbiAgICBmaWx0ZXJzOiBTa3lDb25maXJtQnV0dG9uSGFybmVzc0ZpbHRlcnNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYnV0dG9ucyA9IGF3YWl0IHRoaXMuZ2V0Q3VzdG9tQnV0dG9ucyhmaWx0ZXJzKTtcblxuICAgIGlmIChidXR0b25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIGlmIChmaWx0ZXJzLnRleHQgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgZmlsdGVycy50ZXh0ID0gZmlsdGVycy50ZXh0LnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBNb3JlIHRoYW4gb25lIGJ1dHRvbiBtYXRjaGVzIHRoZSBmaWx0ZXIocyk6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZmlsdGVyc1xuICAgICAgICApfS5gXG4gICAgICApO1xuICAgIH1cbiAgICBhd2FpdCBidXR0b25zWzBdLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIGEgY29uZmlybSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tPa0J1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0eXBlID0gYXdhaXQgdGhpcy5nZXRUeXBlKCk7XG5cbiAgICBpZiAodHlwZSA9PT0gU2t5Q29uZmlybVR5cGUuQ3VzdG9tKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjbGljayBPSyBidXR0b24gb24gYSBjb25maXJtIG9mIHR5cGUgY3VzdG9tLicpO1xuICAgIH1cbiAgICBjb25zdCBidXR0b25zID0gYXdhaXQgdGhpcy4jZ2V0QnV0dG9ucygpO1xuICAgIGF3YWl0IGJ1dHRvbnNbMF0uY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBib2R5IG9mIHRoZSBjb25maXJtIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRCb2R5VGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0Qm9keUVsKCkpPy50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29uZmlybSBjb21wb25lbnQncyBjdXN0b20gYnV0dG9ucy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDdXN0b21CdXR0b25zKFxuICAgIGZpbHRlcnM/OiBTa3lDb25maXJtQnV0dG9uSGFybmVzc0ZpbHRlcnNcbiAgKTogUHJvbWlzZTxTa3lDb25maXJtQnV0dG9uSGFybmVzc1tdPiB7XG4gICAgY29uc3QgY29uZmlybVR5cGUgPSBhd2FpdCB0aGlzLmdldFR5cGUoKTtcblxuICAgIGlmIChjb25maXJtVHlwZSA9PT0gU2t5Q29uZmlybVR5cGUuT0spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCBjdXN0b20gYnV0dG9ucyBmb3IgY29uZmlybSBvZiB0eXBlIE9LLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhcm5lc3NlcyA9IGF3YWl0IHRoaXMuI3F1ZXJ5SGFybmVzc2VzKFxuICAgICAgU2t5Q29uZmlybUJ1dHRvbkhhcm5lc3Mud2l0aChmaWx0ZXJzIHx8IHt9KVxuICAgICk7XG5cbiAgICBpZiAoZmlsdGVycyAmJiBoYXJuZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBTdHJpbmdpZnkgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBzbyB0aGF0IGl0J3MgcmVhZGFibGUgaW4gdGhlIGNvbnNvbGUgbG9nLlxuICAgICAgaWYgKGZpbHRlcnMudGV4dCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICBmaWx0ZXJzLnRleHQgPSBmaWx0ZXJzLnRleHQudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgYnV0dG9ucyBtYXRjaGluZyBmaWx0ZXIocyk6ICR7SlNPTi5zdHJpbmdpZnkoZmlsdGVycyl9LmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhcm5lc3NlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtZXNzYWdlIG9mIHRoZSBjb25maXJtIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRNZXNzYWdlVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0TWVzc2FnZUVsKCkpLnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0eXBlIG9mIHRoZSBjb25maXJtIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRUeXBlKCk6IFByb21pc2U8U2t5Q29uZmlybVR5cGU+IHtcbiAgICBjb25zdCBjb25maXJtRWwgPSBhd2FpdCB0aGlzLiNnZXRDb25maXJtRWwoKTtcbiAgICBpZiAoYXdhaXQgY29uZmlybUVsLmhhc0NsYXNzKCdza3ktY29uZmlybS10eXBlLW9rJykpIHtcbiAgICAgIHJldHVybiBTa3lDb25maXJtVHlwZS5PSztcbiAgICB9XG5cbiAgICByZXR1cm4gU2t5Q29uZmlybVR5cGUuQ3VzdG9tO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkIG9uIHRoZSBjb25maXJtIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1doaXRlU3BhY2VQcmVzZXJ2ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRNZXNzYWdlRWwoKSkuaGFzQ2xhc3MoXG4gICAgICAnc2t5LWNvbmZpcm0tcHJlc2VydmUtd2hpdGUtc3BhY2UnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNoaWxkIGhhcm5lc3Nlcy5cbiAgICovXG4gIGFzeW5jICNxdWVyeUhhcm5lc3NlczxUIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcz4oXG4gICAgaGFybmVzczogSGFybmVzc1F1ZXJ5PFQ+XG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMubG9jYXRvckZvckFsbChoYXJuZXNzKSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
/**
|
|
3
|
+
* Harness for interacting with a modal component in tests.
|
|
4
|
+
*/
|
|
5
|
+
export class SkyModalHarness extends SkyComponentHarness {
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
static { this.hostSelector = 'sky-modal'; }
|
|
10
|
+
#getModal = this.locatorFor('.sky-modal');
|
|
11
|
+
#getModalDialog = this.locatorFor('.sky-modal-dialog');
|
|
12
|
+
/**
|
|
13
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
14
|
+
* `SkyModalHarness` that meets certain criteria
|
|
15
|
+
*/
|
|
16
|
+
static with(filters) {
|
|
17
|
+
return SkyModalHarness.getDataSkyIdPredicate(filters);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gets the aria-describedBy property of the modal
|
|
21
|
+
*/
|
|
22
|
+
async getAriaDescribedBy() {
|
|
23
|
+
return (await this.#getModalDialog()).getAttribute('aria-describedby');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Gets the aria-labelledBy property of the modal
|
|
27
|
+
*/
|
|
28
|
+
async getAriaLabelledBy() {
|
|
29
|
+
return (await this.#getModalDialog()).getAttribute('aria-labelledby');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets the role of the modal.
|
|
33
|
+
*/
|
|
34
|
+
async getAriaRole() {
|
|
35
|
+
return (await this.#getModalDialog()).getAttribute('role');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the modal size.
|
|
39
|
+
*/
|
|
40
|
+
async getSize() {
|
|
41
|
+
if (await this.isFullPage()) {
|
|
42
|
+
throw new Error('Size cannot be determined because size property is overridden when modal is full page');
|
|
43
|
+
}
|
|
44
|
+
const modal = await this.#getModal();
|
|
45
|
+
if (await modal.hasClass('sky-modal-small')) {
|
|
46
|
+
return 'small';
|
|
47
|
+
}
|
|
48
|
+
if (await modal.hasClass('sky-modal-large')) {
|
|
49
|
+
return 'large';
|
|
50
|
+
}
|
|
51
|
+
return 'medium';
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gets the wrapper class of the modal.
|
|
55
|
+
*/
|
|
56
|
+
async getWrapperClass() {
|
|
57
|
+
return await (await this.host()).getProperty('className');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Whether the modal is full page.
|
|
61
|
+
*/
|
|
62
|
+
async isFullPage() {
|
|
63
|
+
const modal = this.#getModal();
|
|
64
|
+
return (await modal).hasClass('sky-modal-full-page');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Whether the modal has {@link SkyModalIsDirtyDirective.isDirty} set to dirty.
|
|
68
|
+
*/
|
|
69
|
+
async isDirty() {
|
|
70
|
+
const modalHost = await this.host();
|
|
71
|
+
const isDirtyAttribute = await modalHost.getAttribute('data-sky-modal-is-dirty');
|
|
72
|
+
return isDirtyAttribute === 'true';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvdGVzdGluZy9zcmMvbW9kYWwvbW9kYWwtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLG1CQUFtQjtJQUN0RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsV0FBVyxDQUFDO0lBRXpDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFdkQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBK0I7UUFFL0IsT0FBTyxlQUFlLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGtCQUFrQjtRQUM3QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixJQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUZBQXVGLENBQ3hGLENBQUM7U0FDSDtRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXJDLElBQUksTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDM0MsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxJQUFJLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxTQUFTLENBQUMsWUFBWSxDQUNuRCx5QkFBeUIsQ0FDMUIsQ0FBQztRQUNGLE9BQU8sZ0JBQWdCLEtBQUssTUFBTSxDQUFDO0lBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lNb2RhbEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9tb2RhbC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBtb2RhbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lNb2RhbEhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LW1vZGFsJztcblxuICAjZ2V0TW9kYWwgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktbW9kYWwnKTtcbiAgI2dldE1vZGFsRGlhbG9nID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LW1vZGFsLWRpYWxvZycpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lNb2RhbEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreU1vZGFsSGFybmVzc0ZpbHRlcnNcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lNb2RhbEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5TW9kYWxIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhcmlhLWRlc2NyaWJlZEJ5IHByb3BlcnR5IG9mIHRoZSBtb2RhbFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFyaWFEZXNjcmliZWRCeSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldE1vZGFsRGlhbG9nKCkpLmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFyaWEtbGFiZWxsZWRCeSBwcm9wZXJ0eSBvZiB0aGUgbW9kYWxcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRBcmlhTGFiZWxsZWRCeSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldE1vZGFsRGlhbG9nKCkpLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcm9sZSBvZiB0aGUgbW9kYWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXJpYVJvbGUoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRNb2RhbERpYWxvZygpKS5nZXRBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtb2RhbCBzaXplLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNpemUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoYXdhaXQgdGhpcy5pc0Z1bGxQYWdlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NpemUgY2Fubm90IGJlIGRldGVybWluZWQgYmVjYXVzZSBzaXplIHByb3BlcnR5IGlzIG92ZXJyaWRkZW4gd2hlbiBtb2RhbCBpcyBmdWxsIHBhZ2UnXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy4jZ2V0TW9kYWwoKTtcblxuICAgIGlmIChhd2FpdCBtb2RhbC5oYXNDbGFzcygnc2t5LW1vZGFsLXNtYWxsJykpIHtcbiAgICAgIHJldHVybiAnc21hbGwnO1xuICAgIH1cblxuICAgIGlmIChhd2FpdCBtb2RhbC5oYXNDbGFzcygnc2t5LW1vZGFsLWxhcmdlJykpIHtcbiAgICAgIHJldHVybiAnbGFyZ2UnO1xuICAgIH1cblxuICAgIHJldHVybiAnbWVkaXVtJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB3cmFwcGVyIGNsYXNzIG9mIHRoZSBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRXcmFwcGVyQ2xhc3MoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5nZXRQcm9wZXJ0eSgnY2xhc3NOYW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbW9kYWwgaXMgZnVsbCBwYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRnVsbFBhZ2UoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLiNnZXRNb2RhbCgpO1xuICAgIHJldHVybiAoYXdhaXQgbW9kYWwpLmhhc0NsYXNzKCdza3ktbW9kYWwtZnVsbC1wYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbW9kYWwgaGFzIHtAbGluayBTa3lNb2RhbElzRGlydHlEaXJlY3RpdmUuaXNEaXJ0eX0gc2V0IHRvIGRpcnR5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlydHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbW9kYWxIb3N0ID0gYXdhaXQgdGhpcy5ob3N0KCk7XG4gICAgY29uc3QgaXNEaXJ0eUF0dHJpYnV0ZSA9IGF3YWl0IG1vZGFsSG9zdC5nZXRBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1za3ktbW9kYWwtaXMtZGlydHknXG4gICAgKTtcbiAgICByZXR1cm4gaXNEaXJ0eUF0dHJpYnV0ZSA9PT0gJ3RydWUnO1xuICB9XG59XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvdGVzdGluZy9zcmMvbW9kYWwtZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixhQUFhLENBQWM7SUFFM0IsUUFBUSxDQUE0QjtJQUVwQyxZQUFZLE9BQWtDLEVBQUUsU0FBaUI7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FDekMseUJBQXlCLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FDOUIsQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELFNBQVMsSUFBSSxDQUN2RSxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDeEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6RCxzSUFBc0k7UUFDdEksTUFBTSxvQkFBb0I7UUFDeEIsb0VBQW9FO1FBQ3BFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBRSxDQUFDO1FBQ3ZELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekQsc0lBQXNJO1FBQ3RJLE1BQU0sbUJBQW1CO1FBQ3ZCLG9FQUFvRTtRQUNwRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUUsQ0FBQztRQUV0RCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pELHNJQUFzSTtRQUN0SSxvRUFBb0U7UUFDcEUsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBRSxDQUFDO1FBQy9ELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsT0FBTyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsSUFBSTtRQUNiLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkQsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUU7WUFDaEMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUU7Z0JBQzNELE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU87SUFDVCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxXQUFXLEdBQXVCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUN0RSxpQ0FBaUMsQ0FDbEMsQ0FBQztRQUVGLElBQ0UsV0FBVztZQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUN2RDtZQUNBLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLE1BQU0sVUFBVSxHQUF1QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDckUsaUVBQWlFLENBQ2xFLENBQUM7UUFFRixJQUFJLFVBQVUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUN4RSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQjthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIseUZBQXlGO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUUsQ0FBQztJQUNoRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBbGxvd3MgaW50ZXJhY3Rpb24gd2l0aCBhIFNLWSBVWCBtb2RhbCBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreU1vZGFsRml4dHVyZSB7XG4gICNtb2RhbEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICNmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPHVua25vd24+O1xuXG4gIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4sIHNreVRlc3RJZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jZml4dHVyZSA9IGZpeHR1cmU7XG4gICAgY29uc3QgbW9kYWxFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdza3ktbW9kYWxbZGF0YS1za3ktaWQ9XCInICsgc2t5VGVzdElkICsgJ1wiXSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKCFtb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE5vIGVsZW1lbnQgd2FzIGZvdW5kIHdpdGggYSBcXGBkYXRhLXNreS1pZFxcYCB2YWx1ZSBvZiBcIiR7c2t5VGVzdElkfVwiLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy4jbW9kYWxFbGVtZW50ID0gbW9kYWxFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RhbCBjb21wb25lbnQncyBBUklBIGRlc2NyaWJlZGJ5IGF0dHJpYnV0ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW9kYWxEaWFsb2dFbGVtZW50ID0gdGhpcy4jZ2V0TW9kYWxEaWFsb2dFbGVtZW50KCk7XG4gICAgLyogTm9uLW51bGwgYXNzZXJ0aW9uIGFzIG91ciBjb21wb25lbnQgaGFzIGEgZGVmYXVsdCBmb3IgaWYgdGhlIHVzZXIgZG9lcyBub3QgcHJvdmlkZSB0aGlzIGF0dHJpYnV0ZSBvciBpZiB0aGV5IHByb3ZpZGUgXCJ1bmRlZmluZWRcIiAqL1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5QXR0cmlidXRlID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICBtb2RhbERpYWxvZ0VsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykhO1xuICAgIHJldHVybiBkZXNjcmliZWRCeUF0dHJpYnV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbW9kYWwgY29tcG9uZW50J3MgQVJJQSBsYWJlbGxlZGJ5IGF0dHJpYnV0ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtb2RhbERpYWxvZ0VsZW1lbnQgPSB0aGlzLiNnZXRNb2RhbERpYWxvZ0VsZW1lbnQoKTtcbiAgICAvKiBOb24tbnVsbCBhc3NlcnRpb24gYXMgb3VyIGNvbXBvbmVudCBoYXMgYSBkZWZhdWx0IGZvciBpZiB0aGUgdXNlciBkb2VzIG5vdCBwcm92aWRlIHRoaXMgYXR0cmlidXRlIG9yIGlmIHRoZXkgcHJvdmlkZSBcInVuZGVmaW5lZFwiICovXG4gICAgY29uc3QgbGFiZWxsZWRCeUF0dHJpYnV0ZSA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgbW9kYWxEaWFsb2dFbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykhO1xuXG4gICAgcmV0dXJuIGxhYmVsbGVkQnlBdHRyaWJ1dGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1vZGFsIGNvbXBvbmVudCdzIHJvbGUgYXR0cmlidXRlLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1vZGFsRGlhbG9nRWxlbWVudCA9IHRoaXMuI2dldE1vZGFsRGlhbG9nRWxlbWVudCgpO1xuICAgIC8qIE5vbi1udWxsIGFzc2VydGlvbiBhcyBvdXIgY29tcG9uZW50IGhhcyBhIGRlZmF1bHQgZm9yIGlmIHRoZSB1c2VyIGRvZXMgbm90IHByb3ZpZGUgdGhpcyBhdHRyaWJ1dGUgb3IgaWYgdGhleSBwcm92aWRlIFwidW5kZWZpbmVkXCIgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIGNvbnN0IHJvbGVBdHRyaWJ1dGUgPSBtb2RhbERpYWxvZ0VsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb2xlJykhO1xuICAgIHJldHVybiByb2xlQXR0cmlidXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBtb2RhbCBpcyBhIGZ1bGwgcGFnZSBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZnVsbFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW9kYWxEaXZFbGVtZW50ID0gdGhpcy5nZXRNb2RhbERpdigpO1xuICAgIHJldHVybiBtb2RhbERpdkVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktbW9kYWwtZnVsbC1wYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgcHVibGljIGdldCBzaXplKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW9kYWxEaXZFbGVtZW50ID0gdGhpcy5nZXRNb2RhbERpdigpO1xuICAgIGNvbnN0IHBvc3NpYmxlU2l6ZXMgPSBbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddO1xuXG4gICAgZm9yIChjb25zdCBzaXplIG9mIHBvc3NpYmxlU2l6ZXMpIHtcbiAgICAgIGlmIChtb2RhbERpdkVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktbW9kYWwtJyArIHNpemUpKSB7XG4gICAgICAgIHJldHVybiBzaXplO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgbW9kYWwgaXMgc2V0IHVwIGZvciB0aWxlZCBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB0aWxlZEJvZHkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW9kYWxEaXZFbGVtZW50ID0gdGhpcy5nZXRNb2RhbERpdigpO1xuICAgIHJldHVybiBtb2RhbERpdkVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktbW9kYWwtdGlsZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIG1vZGFsIGhlYWRlcidzIFwiY2xvc2VcIiBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgY2xpY2tIZWFkZXJDbG9zZUJ1dHRvbigpOiB2b2lkIHtcbiAgICB0aGlzLiNjaGVja01vZGFsRWxlbWVudCgpO1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSB0aGlzLiNtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2t5LW1vZGFsIC5za3ktbW9kYWwtYnRuLWNsb3NlJ1xuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBjbG9zZUJ1dHRvbiAmJlxuICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoY2xvc2VCdXR0b24pLmRpc3BsYXkgIT09ICdub25lJ1xuICAgICkge1xuICAgICAgY2xvc2VCdXR0b24uY2xpY2soKTtcbiAgICAgIHRoaXMuI2ZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGhlYWRlciBjbG9zZSBidXR0b24gZXhpc3RzLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIG1vZGFsIGhlYWRlcidzIFwiaGVscFwiIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBjbGlja0hlbHBCdXR0b24oKTogdm9pZCB7XG4gICAgdGhpcy4jY2hlY2tNb2RhbEVsZW1lbnQoKTtcbiAgICBjb25zdCBoZWxwQnV0dG9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSB0aGlzLiNtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2t5LW1vZGFsIC5za3ktbW9kYWwtaGVhZGVyLWJ1dHRvbnMgYnV0dG9uW25hbWU9XCJoZWxwLWJ1dHRvblwiXSdcbiAgICApO1xuXG4gICAgaWYgKGhlbHBCdXR0b24gJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUoaGVscEJ1dHRvbikuZGlzcGxheSAhPT0gJ25vbmUnKSB7XG4gICAgICBoZWxwQnV0dG9uLmNsaWNrKCk7XG4gICAgICB0aGlzLiNmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBoZWxwIGJ1dHRvbiBleGlzdHMuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1haW4gbW9kYWwgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRNb2RhbERpdigpOiBhbnkge1xuICAgIHRoaXMuI2NoZWNrTW9kYWxFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMuI21vZGFsRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LW1vZGFsJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbW9kYWwncyBjb250ZW50IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9kYWxDb250ZW50RWwoKTogYW55IHtcbiAgICB0aGlzLiNjaGVja01vZGFsRWxlbWVudCgpO1xuICAgIHJldHVybiB0aGlzLiNtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1tb2RhbC1jb250ZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbW9kYWwncyBmb290ZXIgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRNb2RhbEZvb3RlckVsKCk6IGFueSB7XG4gICAgdGhpcy4jY2hlY2tNb2RhbEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy4jbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktbW9kYWwtZm9vdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbW9kYWwncyBoZWFkZXIgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRNb2RhbEhlYWRlckVsKCk6IGFueSB7XG4gICAgdGhpcy4jY2hlY2tNb2RhbEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy4jbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktbW9kYWwtaGVhZGVyJyk7XG4gIH1cblxuICAjY2hlY2tNb2RhbEVsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKCFkb2N1bWVudC5jb250YWlucyh0aGlzLiNtb2RhbEVsZW1lbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01vZGFsIGVsZW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4gV2FzIHRoZSBtb2RhbCBjbG9zZWQ/Jyk7XG4gICAgfVxuICB9XG5cbiAgI2dldE1vZGFsRGlhbG9nRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgdGhpcy4jY2hlY2tNb2RhbEVsZW1lbnQoKTtcbiAgICAvLyBXZSBjYW4gYWx3YXlzIGtub3cgdGhhdCB0aGUgZGlhbG9nIGVsZW1lbnQgd2lsbCBleGlzdCBpZiB0aGUgbW9kYWwgaXMgb3BlbiBhbmQgZXhpc3RzLlxuICAgIHJldHVybiB0aGlzLiNtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1tb2RhbC1kaWFsb2cnKSE7XG4gIH1cbn1cbiJdfQ==
|