@skyux/forms 11.6.0 → 11.8.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 +2638 -2599
- package/esm2022/lib/modules/field-group/field-group.component.mjs +3 -3
- package/esm2022/lib/modules/file-attachment/file-drop/file-drop.component.mjs +10 -4
- package/esm2022/lib/modules/form-error/form-error.component.mjs +3 -3
- package/esm2022/lib/modules/input-box/input-box.component.mjs +2 -2
- package/esm2022/lib/modules/radio/radio-group.component.mjs +4 -3
- package/esm2022/lib/modules/shared/sky-forms-resources.module.mjs +1 -4
- package/esm2022/testing/radio/radio-group-harness.mjs +24 -20
- package/fesm2022/skyux-forms-testing.mjs +23 -19
- package/fesm2022/skyux-forms-testing.mjs.map +1 -1
- package/fesm2022/skyux-forms.mjs +855 -855
- package/fesm2022/skyux-forms.mjs.map +1 -1
- package/lib/modules/file-attachment/file-drop/file-drop.component.d.ts +5 -1
- package/package.json +9 -9
|
@@ -10,12 +10,14 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
12
|
static { this.hostSelector = 'sky-radio-group'; }
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#getH5 = this.locatorForOptional('legend h5');
|
|
16
|
-
#getHeading = this.locatorFor('.sky-control-label');
|
|
17
|
-
#getHeadingText = this.locatorForOptional('legend .sky-radio-group-heading-text');
|
|
13
|
+
#getHeading = this.locatorForOptional('.sky-control-label');
|
|
14
|
+
#getHeadingWrapper = this.locatorFor('.sky-control-label span');
|
|
18
15
|
#getHintText = this.locatorForOptional('.sky-radio-group-hint-text');
|
|
16
|
+
#getLegendDefault = this.locatorForOptional('legend .sky-radio-group-heading-text');
|
|
17
|
+
#getLegendH3 = this.locatorForOptional('legend h3');
|
|
18
|
+
#getLegendH4 = this.locatorForOptional('legend h4');
|
|
19
|
+
#getLegendH5 = this.locatorForOptional('legend h5');
|
|
20
|
+
#getLegendHeading = this.locatorForOptional('legend h3,h4,h5,.sky-radio-group-heading-text');
|
|
19
21
|
#getRadioButtons = this.locatorForAll(SkyRadioHarness);
|
|
20
22
|
/**
|
|
21
23
|
* Gets a `HarnessPredicate` that can be used to search for a
|
|
@@ -34,15 +36,15 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
34
36
|
* Whether the heading is hidden.
|
|
35
37
|
*/
|
|
36
38
|
async getHeadingHidden() {
|
|
37
|
-
return (await this.#getHeading())
|
|
39
|
+
return ((await this.#getHeading())?.hasClass('sky-screen-reader-only') ?? true);
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* The semantic heading level used for the radio group. Returns undefined if heading level is not set.
|
|
41
43
|
*/
|
|
42
44
|
async getHeadingLevel() {
|
|
43
|
-
const h3 = await this.#
|
|
44
|
-
const h4 = await this.#
|
|
45
|
-
const h5 = await this.#
|
|
45
|
+
const h3 = await this.#getLegendH3();
|
|
46
|
+
const h4 = await this.#getLegendH4();
|
|
47
|
+
const h5 = await this.#getLegendH5();
|
|
46
48
|
if (h3) {
|
|
47
49
|
return 3;
|
|
48
50
|
}
|
|
@@ -60,10 +62,10 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
60
62
|
* The heading style used for the radio group.
|
|
61
63
|
*/
|
|
62
64
|
async getHeadingStyle() {
|
|
63
|
-
const headingOrLabel = (await this.#
|
|
64
|
-
(await this.#
|
|
65
|
-
(await this.#
|
|
66
|
-
(await this.#
|
|
65
|
+
const headingOrLabel = (await this.#getLegendH3()) ||
|
|
66
|
+
(await this.#getLegendH4()) ||
|
|
67
|
+
(await this.#getLegendH5()) ||
|
|
68
|
+
(await this.#getLegendDefault());
|
|
67
69
|
const isHeadingStyle3 = await headingOrLabel?.hasClass('sky-font-heading-3');
|
|
68
70
|
const isHeadingStyle4 = await headingOrLabel?.hasClass('sky-font-heading-4');
|
|
69
71
|
if (isHeadingStyle3) {
|
|
@@ -81,7 +83,7 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
81
83
|
* the text will still be returned.
|
|
82
84
|
*/
|
|
83
85
|
async getHeadingText() {
|
|
84
|
-
return (await this.#
|
|
86
|
+
return (await this.#getLegendHeading())?.text() ?? '';
|
|
85
87
|
}
|
|
86
88
|
/**
|
|
87
89
|
* Gets the help popover content.
|
|
@@ -117,16 +119,18 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
117
119
|
* Whether the radio group is required.
|
|
118
120
|
*/
|
|
119
121
|
async getRequired() {
|
|
120
|
-
const
|
|
121
|
-
return await
|
|
122
|
+
const headingWrapper = await this.#getHeadingWrapper();
|
|
123
|
+
return await headingWrapper.hasClass('sky-control-label-required');
|
|
122
124
|
}
|
|
123
125
|
/**
|
|
124
126
|
* Whether the radio group is stacked.
|
|
125
127
|
*/
|
|
126
128
|
async getStacked() {
|
|
127
129
|
const host = await this.host();
|
|
128
|
-
const heading = (await this.#
|
|
129
|
-
|
|
130
|
+
const heading = (await this.#getLegendH3()) ||
|
|
131
|
+
(await this.#getLegendH4()) ||
|
|
132
|
+
(await this.#getLegendH5());
|
|
133
|
+
const label = await this.#getLegendDefault();
|
|
130
134
|
return (((await host.hasClass('sky-margin-stacked-lg')) && !!label) ||
|
|
131
135
|
((await host.hasClass('sky-margin-stacked-xl')) && !!heading));
|
|
132
136
|
}
|
|
@@ -141,7 +145,7 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
141
145
|
}
|
|
142
146
|
async #getHelpInline() {
|
|
143
147
|
const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({
|
|
144
|
-
ancestor: '.sky-radio-group > .sky-
|
|
148
|
+
ancestor: '.sky-radio-group > .sky-control-label',
|
|
145
149
|
}))();
|
|
146
150
|
if (harness) {
|
|
147
151
|
return harness;
|
|
@@ -149,4 +153,4 @@ export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
149
153
|
throw Error('No help inline found.');
|
|
150
154
|
}
|
|
151
155
|
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9yYWRpby9yYWRpby1ncm91cC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFDM0Q7O09BRUc7YUFDVyxpQkFBWSxHQUFHLGlCQUFpQixDQUFDO0lBRS9DLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDcEQsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDdkMsc0NBQXNDLENBQ3ZDLENBQUM7SUFDRixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDckUsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUV2RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFvQztRQUVwQyxPQUFPLG9CQUFvQixDQUFDLHFCQUFxQixDQUFD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QixDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQzNDLG9CQUFvQixDQUFDLElBQUksQ0FBQztZQUN4QixRQUFRLEVBQUUsbURBQW1EO1NBQzlELENBQUMsQ0FDSCxFQUFFLENBQUM7UUFFSixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQG54L2VuZm9yY2UtbW9kdWxlLWJvdW5kYXJpZXNcbmltcG9ydCB7XG4gIFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwsXG4gIFNreVJhZGlvR3JvdXBIZWFkaW5nU3R5bGUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0hhcm5lc3MgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lSYWRpb0dyb3VwSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lSYWRpb0hhcm5lc3MgfSBmcm9tICcuL3JhZGlvLWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSByYWRpbyBncm91cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0dyb3VwSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktcmFkaW8tZ3JvdXAnO1xuXG4gICNnZXRIMyA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdsZWdlbmQgaDMnKTtcbiAgI2dldEg0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ2xlZ2VuZCBoNCcpO1xuICAjZ2V0SDUgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGg1Jyk7XG4gICNnZXRIZWFkaW5nID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNvbnRyb2wtbGFiZWwnKTtcbiAgI2dldEhlYWRpbmdUZXh0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgJ2xlZ2VuZCAuc2t5LXJhZGlvLWdyb3VwLWhlYWRpbmctdGV4dCcsXG4gICk7XG4gICNnZXRIaW50VGV4dCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LXJhZGlvLWdyb3VwLWhpbnQtdGV4dCcpO1xuICAjZ2V0UmFkaW9CdXR0b25zID0gdGhpcy5sb2NhdG9yRm9yQWxsKFNreVJhZGlvSGFybmVzcyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreVJhZGlvR3JvdXBIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5UmFkaW9Hcm91cEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreVJhZGlvR3JvdXBIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVJhZGlvR3JvdXBIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGhlbHAgaW5saW5lIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0hlbHBJbmxpbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaGVhZGluZyBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ0hpZGRlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldEhlYWRpbmcoKSkuaGFzQ2xhc3MoJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgaGVhZGluZyBsZXZlbCB1c2VkIGZvciB0aGUgcmFkaW8gZ3JvdXAuIFJldHVybnMgdW5kZWZpbmVkIGlmIGhlYWRpbmcgbGV2ZWwgaXMgbm90IHNldC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nTGV2ZWwoKTogUHJvbWlzZTxcbiAgICBTa3lSYWRpb0dyb3VwSGVhZGluZ0xldmVsIHwgdW5kZWZpbmVkXG4gID4ge1xuICAgIGNvbnN0IGgzID0gYXdhaXQgdGhpcy4jZ2V0SDMoKTtcbiAgICBjb25zdCBoNCA9IGF3YWl0IHRoaXMuI2dldEg0KCk7XG4gICAgY29uc3QgaDUgPSBhd2FpdCB0aGlzLiNnZXRINSgpO1xuXG4gICAgaWYgKGgzKSB7XG4gICAgICByZXR1cm4gMztcbiAgICB9IGVsc2UgaWYgKGg0KSB7XG4gICAgICByZXR1cm4gNDtcbiAgICB9IGVsc2UgaWYgKGg1KSB7XG4gICAgICByZXR1cm4gNTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgc3R5bGUgdXNlZCBmb3IgdGhlIHJhZGlvIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlYWRpbmdTdHlsZSgpOiBQcm9taXNlPFNreVJhZGlvR3JvdXBIZWFkaW5nU3R5bGU+IHtcbiAgICBjb25zdCBoZWFkaW5nT3JMYWJlbCA9XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0SDMoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRINCgpKSB8fFxuICAgICAgKGF3YWl0IHRoaXMuI2dldEg1KCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0SGVhZGluZ1RleHQoKSk7XG5cbiAgICBjb25zdCBpc0hlYWRpbmdTdHlsZTMgPVxuICAgICAgYXdhaXQgaGVhZGluZ09yTGFiZWw/Lmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTMnKTtcbiAgICBjb25zdCBpc0hlYWRpbmdTdHlsZTQgPVxuICAgICAgYXdhaXQgaGVhZGluZ09yTGFiZWw/Lmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTQnKTtcblxuICAgIGlmIChpc0hlYWRpbmdTdHlsZTMpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSBpZiAoaXNIZWFkaW5nU3R5bGU0KSB7XG4gICAgICByZXR1cm4gNDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGdyb3VwJ3MgaGVhZGluZyB0ZXh0LiBJZiBgaGVhZGluZ0hpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nVGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0SGVhZGluZygpKS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJDb250ZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJDb250ZW50KCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBFcnJvcignVW5leHBlY3RlZCB0ZW1wbGF0ZSByZWYnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByYWRpbyBncm91cCdzIGhpbnQgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIaW50VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGhpbnRUZXh0ID0gYXdhaXQgdGhpcy4jZ2V0SGludFRleHQoKTtcblxuICAgIHJldHVybiAoYXdhaXQgaGludFRleHQ/LnRleHQoKSk/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGFycmF5IG9mIGhhcm5lc3NlcyBmb3IgdGhlIHJhZGlvIGJ1dHRvbnMgaW4gdGhlIHJhZGlvIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFJhZGlvQnV0dG9ucygpOiBQcm9taXNlPFNreVJhZGlvSGFybmVzc1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2dldFJhZGlvQnV0dG9ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFJlcXVpcmVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGhlYWRpbmcgPSBhd2FpdCB0aGlzLiNnZXRIZWFkaW5nKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaGVhZGluZy5oYXNDbGFzcygnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBncm91cCBpcyBzdGFja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuICAgIGNvbnN0IGhlYWRpbmcgPVxuICAgICAgKGF3YWl0IHRoaXMuI2dldEgzKCkpIHx8IChhd2FpdCB0aGlzLiNnZXRINCgpKSB8fCAoYXdhaXQgdGhpcy4jZ2V0SDUoKSk7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRIZWFkaW5nVGV4dCgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICgoYXdhaXQgaG9zdC5oYXNDbGFzcygnc2t5LW1hcmdpbi1zdGFja2VkLWxnJykpICYmICEhbGFiZWwpIHx8XG4gICAgICAoKGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1tYXJnaW4tc3RhY2tlZC14bCcpKSAmJiAhIWhlYWRpbmcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBncm91cCBoYXMgZXJyb3JzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0Vycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpLmhhc0Vycm9yKGVycm9yTmFtZSk7XG4gIH1cblxuICBhc3luYyAjZ2V0Rm9ybUVycm9ycygpOiBQcm9taXNlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lGb3JtRXJyb3JzSGFybmVzcykoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lIZWxwSW5saW5lSGFybmVzcy53aXRoKHtcbiAgICAgICAgYW5jZXN0b3I6ICcuc2t5LXJhZGlvLWdyb3VwID4gLnNreS1yYWRpby1ncm91cC1sYWJlbC13cmFwcGVyJyxcbiAgICAgIH0pLFxuICAgICkoKTtcblxuICAgIGlmIChoYXJuZXNzKSB7XG4gICAgICByZXR1cm4gaGFybmVzcztcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9yYWRpby9yYWRpby1ncm91cC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFDM0Q7O09BRUc7YUFDVyxpQkFBWSxHQUFHLGlCQUFpQixDQUFDO0lBRS9DLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDaEUsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3JFLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDekMsc0NBQXNDLENBQ3ZDLENBQUM7SUFDRixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ3pDLCtDQUErQyxDQUNoRCxDQUFDO0lBQ0YsZ0JBQWdCLEdB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QUMsU0FBaUI7UUFDckMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDeEIsUUFBUSxFQUFFLHVDQUF1QztTQUNsRCxDQUFDLENBQ0gsRUFBRSxDQUFDO1FBRUosSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBueC9lbmZvcmNlLW1vZHVsZS1ib3VuZGFyaWVzXG5pbXBvcnQge1xuICBTa3lSYWRpb0dyb3VwSGVhZGluZ0xldmVsLFxuICBTa3lSYWRpb0dyb3VwSGVhZGluZ1N0eWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvcnNIYXJuZXNzIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1oYXJuZXNzJztcblxuaW1wb3J0IHsgU2t5UmFkaW9Hcm91cEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yYWRpby1ncm91cC1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5UmFkaW9IYXJuZXNzIH0gZnJvbSAnLi9yYWRpby1oYXJuZXNzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgcmFkaW8gZ3JvdXAgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5UmFkaW9Hcm91cEhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LXJhZGlvLWdyb3VwJztcblxuICAjZ2V0SGVhZGluZyA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LWNvbnRyb2wtbGFiZWwnKTtcbiAgI2dldEhlYWRpbmdXcmFwcGVyID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNvbnRyb2wtbGFiZWwgc3BhbicpO1xuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1yYWRpby1ncm91cC1oaW50LXRleHQnKTtcbiAgI2dldExlZ2VuZERlZmF1bHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIC5za3ktcmFkaW8tZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcbiAgI2dldExlZ2VuZEgzID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ2xlZ2VuZCBoMycpO1xuICAjZ2V0TGVnZW5kSDQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGg0Jyk7XG4gICNnZXRMZWdlbmRINSA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdsZWdlbmQgaDUnKTtcbiAgI2dldExlZ2VuZEhlYWRpbmcgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIGgzLGg0LGg1LC5za3ktcmFkaW8tZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcbiAgI2dldFJhZGlvQnV0dG9ucyA9IHRoaXMubG9jYXRvckZvckFsbChTa3lSYWRpb0hhcm5lc3MpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lSYWRpb0dyb3VwSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreVJhZGlvR3JvdXBIYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lSYWRpb0dyb3VwSGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lSYWRpb0dyb3VwSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGhlYWRpbmcgaXMgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlYWRpbmdIaWRkZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRIZWFkaW5nKCkpPy5oYXNDbGFzcygnc2t5LXNjcmVlbi1yZWFkZXItb25seScpID8/IHRydWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyBoZWFkaW5nIGxldmVsIHVzZWQgZm9yIHRoZSByYWRpbyBncm91cC4gUmV0dXJucyB1bmRlZmluZWQgaWYgaGVhZGluZyBsZXZlbCBpcyBub3Qgc2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlYWRpbmdMZXZlbCgpOiBQcm9taXNlPFxuICAgIFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfCB1bmRlZmluZWRcbiAgPiB7XG4gICAgY29uc3QgaDMgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpO1xuICAgIGNvbnN0IGg0ID0gYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDQoKTtcbiAgICBjb25zdCBoNSA9IGF3YWl0IHRoaXMuI2dldExlZ2VuZEg1KCk7XG5cbiAgICBpZiAoaDMpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSBpZiAoaDQpIHtcbiAgICAgIHJldHVybiA0O1xuICAgIH0gZWxzZSBpZiAoaDUpIHtcbiAgICAgIHJldHVybiA1O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyBzdHlsZSB1c2VkIGZvciB0aGUgcmFkaW8gZ3JvdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ1N0eWxlKCk6IFByb21pc2U8U2t5UmFkaW9Hcm91cEhlYWRpbmdTdHlsZT4ge1xuICAgIGNvbnN0IGhlYWRpbmdPckxhYmVsID1cbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpKSB8fFxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEg0KCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDUoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmREZWZhdWx0KCkpO1xuXG4gICAgY29uc3QgaXNIZWFkaW5nU3R5bGUzID1cbiAgICAgIGF3YWl0IGhlYWRpbmdPckxhYmVsPy5oYXNDbGFzcygnc2t5LWZvbnQtaGVhZGluZy0zJyk7XG4gICAgY29uc3QgaXNIZWFkaW5nU3R5bGU0ID1cbiAgICAgIGF3YWl0IGhlYWRpbmdPckxhYmVsPy5oYXNDbGFzcygnc2t5LWZvbnQtaGVhZGluZy00Jyk7XG5cbiAgICBpZiAoaXNIZWFkaW5nU3R5bGUzKSB7XG4gICAgICByZXR1cm4gMztcbiAgICB9IGVsc2UgaWYgKGlzSGVhZGluZ1N0eWxlNCkge1xuICAgICAgcmV0dXJuIDQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA1O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByYWRpbyBncm91cCdzIGhlYWRpbmcgdGV4dC4gSWYgYGhlYWRpbmdIaWRkZW5gIGlzIHRydWUsXG4gICAqIHRoZSB0ZXh0IHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ1RleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldExlZ2VuZEhlYWRpbmcoKSk/LnRleHQoKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlckNvbnRlbnQoKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmV4cGVjdGVkIHRlbXBsYXRlIHJlZicpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlclRpdGxlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGdyb3VwJ3MgaGludCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhpbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaGludFRleHQgPSBhd2FpdCB0aGlzLiNnZXRIaW50VGV4dCgpO1xuXG4gICAgcmV0dXJuIChhd2FpdCBoaW50VGV4dD8udGV4dCgpKT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gYXJyYXkgb2YgaGFybmVzc2VzIGZvciB0aGUgcmFkaW8gYnV0dG9ucyBpbiB0aGUgcmFkaW8gZ3JvdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UmFkaW9CdXR0b25zKCk6IFByb21pc2U8U2t5UmFkaW9IYXJuZXNzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jZ2V0UmFkaW9CdXR0b25zKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaXMgcmVxdWlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlyZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaGVhZGluZ1dyYXBwZXIgPSBhd2FpdCB0aGlzLiNnZXRIZWFkaW5nV3JhcHBlcigpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGhlYWRpbmdXcmFwcGVyLmhhc0NsYXNzKCdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIHN0YWNrZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U3RhY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5ob3N0KCk7XG4gICAgY29uc3QgaGVhZGluZyA9XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDMoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRINCgpKSB8fFxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEg1KCkpO1xuICAgIGNvbnN0IGxhYmVsID0gYXdhaXQgdGhpcy4jZ2V0TGVnZW5kRGVmYXVsdCgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICgoYXdhaXQgaG9zdC5oYXNDbGFzcygnc2t5LW1hcmdpbi1zdGFja2VkLWxnJykpICYmICEhbGFiZWwpIHx8XG4gICAgICAoKGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1tYXJnaW4tc3RhY2tlZC14bCcpKSAmJiAhIWhlYWRpbmcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBncm91cCBoYXMgZXJyb3JzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0Vycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpLmhhc0Vycm9yKGVycm9yTmFtZSk7XG4gIH1cblxuICBhc3luYyAjZ2V0Rm9ybUVycm9ycygpOiBQcm9taXNlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lGb3JtRXJyb3JzSGFybmVzcykoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lIZWxwSW5saW5lSGFybmVzcy53aXRoKHtcbiAgICAgICAgYW5jZXN0b3I6ICcuc2t5LXJhZGlvLWdyb3VwID4gLnNreS1jb250cm9sLWxhYmVsJyxcbiAgICAgIH0pLFxuICAgICkoKTtcblxuICAgIGlmIChoYXJuZXNzKSB7XG4gICAgICByZXR1cm4gaGFybmVzcztcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1014,12 +1014,14 @@ class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
1014
1014
|
* @internal
|
|
1015
1015
|
*/
|
|
1016
1016
|
static { this.hostSelector = 'sky-radio-group'; }
|
|
1017
|
-
#
|
|
1018
|
-
#
|
|
1019
|
-
#getH5 = this.locatorForOptional('legend h5');
|
|
1020
|
-
#getHeading = this.locatorFor('.sky-control-label');
|
|
1021
|
-
#getHeadingText = this.locatorForOptional('legend .sky-radio-group-heading-text');
|
|
1017
|
+
#getHeading = this.locatorForOptional('.sky-control-label');
|
|
1018
|
+
#getHeadingWrapper = this.locatorFor('.sky-control-label span');
|
|
1022
1019
|
#getHintText = this.locatorForOptional('.sky-radio-group-hint-text');
|
|
1020
|
+
#getLegendDefault = this.locatorForOptional('legend .sky-radio-group-heading-text');
|
|
1021
|
+
#getLegendH3 = this.locatorForOptional('legend h3');
|
|
1022
|
+
#getLegendH4 = this.locatorForOptional('legend h4');
|
|
1023
|
+
#getLegendH5 = this.locatorForOptional('legend h5');
|
|
1024
|
+
#getLegendHeading = this.locatorForOptional('legend h3,h4,h5,.sky-radio-group-heading-text');
|
|
1023
1025
|
#getRadioButtons = this.locatorForAll(SkyRadioHarness);
|
|
1024
1026
|
/**
|
|
1025
1027
|
* Gets a `HarnessPredicate` that can be used to search for a
|
|
@@ -1038,15 +1040,15 @@ class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
1038
1040
|
* Whether the heading is hidden.
|
|
1039
1041
|
*/
|
|
1040
1042
|
async getHeadingHidden() {
|
|
1041
|
-
return (await this.#getHeading())
|
|
1043
|
+
return ((await this.#getHeading())?.hasClass('sky-screen-reader-only') ?? true);
|
|
1042
1044
|
}
|
|
1043
1045
|
/**
|
|
1044
1046
|
* The semantic heading level used for the radio group. Returns undefined if heading level is not set.
|
|
1045
1047
|
*/
|
|
1046
1048
|
async getHeadingLevel() {
|
|
1047
|
-
const h3 = await this.#
|
|
1048
|
-
const h4 = await this.#
|
|
1049
|
-
const h5 = await this.#
|
|
1049
|
+
const h3 = await this.#getLegendH3();
|
|
1050
|
+
const h4 = await this.#getLegendH4();
|
|
1051
|
+
const h5 = await this.#getLegendH5();
|
|
1050
1052
|
if (h3) {
|
|
1051
1053
|
return 3;
|
|
1052
1054
|
}
|
|
@@ -1064,10 +1066,10 @@ class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
1064
1066
|
* The heading style used for the radio group.
|
|
1065
1067
|
*/
|
|
1066
1068
|
async getHeadingStyle() {
|
|
1067
|
-
const headingOrLabel = (await this.#
|
|
1068
|
-
(await this.#
|
|
1069
|
-
(await this.#
|
|
1070
|
-
(await this.#
|
|
1069
|
+
const headingOrLabel = (await this.#getLegendH3()) ||
|
|
1070
|
+
(await this.#getLegendH4()) ||
|
|
1071
|
+
(await this.#getLegendH5()) ||
|
|
1072
|
+
(await this.#getLegendDefault());
|
|
1071
1073
|
const isHeadingStyle3 = await headingOrLabel?.hasClass('sky-font-heading-3');
|
|
1072
1074
|
const isHeadingStyle4 = await headingOrLabel?.hasClass('sky-font-heading-4');
|
|
1073
1075
|
if (isHeadingStyle3) {
|
|
@@ -1085,7 +1087,7 @@ class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
1085
1087
|
* the text will still be returned.
|
|
1086
1088
|
*/
|
|
1087
1089
|
async getHeadingText() {
|
|
1088
|
-
return (await this.#
|
|
1090
|
+
return (await this.#getLegendHeading())?.text() ?? '';
|
|
1089
1091
|
}
|
|
1090
1092
|
/**
|
|
1091
1093
|
* Gets the help popover content.
|
|
@@ -1121,16 +1123,18 @@ class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
1121
1123
|
* Whether the radio group is required.
|
|
1122
1124
|
*/
|
|
1123
1125
|
async getRequired() {
|
|
1124
|
-
const
|
|
1125
|
-
return await
|
|
1126
|
+
const headingWrapper = await this.#getHeadingWrapper();
|
|
1127
|
+
return await headingWrapper.hasClass('sky-control-label-required');
|
|
1126
1128
|
}
|
|
1127
1129
|
/**
|
|
1128
1130
|
* Whether the radio group is stacked.
|
|
1129
1131
|
*/
|
|
1130
1132
|
async getStacked() {
|
|
1131
1133
|
const host = await this.host();
|
|
1132
|
-
const heading = (await this.#
|
|
1133
|
-
|
|
1134
|
+
const heading = (await this.#getLegendH3()) ||
|
|
1135
|
+
(await this.#getLegendH4()) ||
|
|
1136
|
+
(await this.#getLegendH5());
|
|
1137
|
+
const label = await this.#getLegendDefault();
|
|
1134
1138
|
return (((await host.hasClass('sky-margin-stacked-lg')) && !!label) ||
|
|
1135
1139
|
((await host.hasClass('sky-margin-stacked-xl')) && !!heading));
|
|
1136
1140
|
}
|
|
@@ -1145,7 +1149,7 @@ class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
|
1145
1149
|
}
|
|
1146
1150
|
async #getHelpInline() {
|
|
1147
1151
|
const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({
|
|
1148
|
-
ancestor: '.sky-radio-group > .sky-
|
|
1152
|
+
ancestor: '.sky-radio-group > .sky-control-label',
|
|
1149
1153
|
}))();
|
|
1150
1154
|
if (harness) {
|
|
1151
1155
|
return harness;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-forms-testing.mjs","sources":["../../../../../libs/components/forms/testing/src/character-counter/character-counter-indicator-harness.ts","../../../../../libs/components/forms/testing/src/form-error/form-error-harness.ts","../../../../../libs/components/forms/testing/src/form-error/form-errors-harness.ts","../../../../../libs/components/forms/testing/src/input-box/input-box-harness.ts","../../../../../libs/components/forms/testing/src/checkbox-fixture.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-label-harness.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-label-text-label.harness.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-harness.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-group-harness.ts","../../../../../libs/components/forms/testing/src/radio-fixture.ts","../../../../../libs/components/forms/testing/src/radio/radio-label-harness.ts","../../../../../libs/components/forms/testing/src/radio/radio-harness.ts","../../../../../libs/components/forms/testing/src/radio/radio-group-harness.ts","../../../../../libs/components/forms/testing/src/skyux-forms-testing.ts"],"sourcesContent":["import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyCharacterCounterIndicatorHarnessFilters } from './character-counter-indicator-harness-filters';\n\ntype LabelParts = {\n count: number;\n limit: number;\n};\n\n/**\n * Harness for interacting with a character counter indicator component in tests.\n */\nexport class SkyCharacterCounterIndicatorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-character-counter-indicator';\n\n #getLabel = this.locatorFor('.sky-character-count-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCharacterCounterIndicatorHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCharacterCounterIndicatorHarnessFilters,\n ): HarnessPredicate<SkyCharacterCounterIndicatorHarness> {\n return SkyCharacterCounterIndicatorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the current character count.\n */\n public async getCharacterCount(): Promise<number> {\n return (await this.#getLabelParts()).count;\n }\n\n /**\n * Gets the character counter limit.\n */\n public async getCharacterCountLimit(): Promise<number> {\n return (await this.#getLabelParts()).limit;\n }\n\n /**\n * Indicates whether the character counter is in an error state because the current character\n * count is greater than the limit.\n */\n public async isOverLimit(): Promise<boolean> {\n return (await this.#getLabel()).hasClass('sky-error-label');\n }\n\n async #getLabelParts(): Promise<LabelParts> {\n const label = await this.#getLabel();\n const textParts = (await label.text()).split('/');\n\n let labelParts: LabelParts | undefined;\n\n if (textParts.length === 2) {\n labelParts = {\n count: +textParts[0].trim(),\n limit: +textParts[1].trim(),\n };\n }\n\n if (labelParts && !isNaN(labelParts.count) && !isNaN(labelParts.limit)) {\n return labelParts;\n }\n\n throw new Error(\n 'The character counter indicator does not contain text in the expected format.',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarnessFilters } from './form-error-harness.filters';\n\nexport class SkyFormErrorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorHarnessFilters,\n ): HarnessPredicate<SkyFormErrorHarness> {\n return SkyFormErrorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the error name.\n */\n public async getErrorName(): Promise<string | null> {\n return (await this.host()).getAttribute('errorName');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarness } from './form-error-harness';\nimport { SkyFormErrorsHarnessFilters } from './form-errors-harness.filters';\n\nexport class SkyFormErrorsHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-errors';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorsHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorsHarnessFilters,\n ): HarnessPredicate<SkyFormErrorsHarness> {\n return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of all errors fired.\n */\n public async getFormErrors(): Promise<{ errorName: string | null }[]> {\n const formErrorHarnesses = await this.locatorForAll(\n SkyFormErrorHarness.with({}),\n )();\n\n return Promise.all(\n formErrorHarnesses.map(async (formError) => {\n return { errorName: await formError.getErrorName() };\n }),\n );\n }\n\n /**\n * Whether an error with the given name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n const formErrors = await this.getFormErrors();\n return formErrors.some((error) => {\n return error.errorName === errorName;\n });\n }\n}\n","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { TemplateRef } from '@angular/core';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nimport { SkyPopoverHarness } from '@skyux/popovers/testing';\n\nimport { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyInputBoxHarnessFilters } from './input-box-harness-filters';\n\n/**\n * Harness for interacting with an input box component in tests.\n */\nexport class SkyInputBoxHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-input-box';\n\n #getHintText = this.locatorForOptional('.sky-input-box-hint-text');\n #getLabel = this.locatorForOptional('.sky-control-label');\n #getWrapper = this.locatorFor('.sky-input-box');\n\n async #getFormError(): Promise<SkyFormErrorsHarness> {\n return this.locatorFor(SkyFormErrorsHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInputBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyInputBoxHarnessFilters,\n ): HarnessPredicate<SkyInputBoxHarness> {\n return SkyInputBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the character counter indicator for the input box or throws an error if\n * a character limit is not specified.\n */\n public async getCharacterCounter(): Promise<SkyCharacterCounterIndicatorHarness> {\n const characterCounter = await this.locatorForOptional(\n new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {\n ancestor: '.sky-input-box-label-wrapper',\n }),\n )();\n\n if (!characterCounter) {\n throw new Error(\n 'The input box does not have a character limit specified.',\n );\n }\n\n return characterCounter;\n }\n\n /**\n * Gets a list of status indicator harnesses for errors not automatically\n * handled by input box.\n */\n public async getCustomErrors(): Promise<SkyStatusIndicatorHarness[]> {\n const errors = await this.locatorForAll(\n new HarnessPredicate(SkyStatusIndicatorHarness, {\n selector:\n 'sky-status-indicator:not(sky-form-error sky-status-indicator)',\n }),\n )();\n\n return errors;\n }\n\n /**\n * Whether the custom error is triggered.\n */\n public async hasCustomFormError(errorName: string): Promise<boolean> {\n return (await this.#getFormError()).hasError(errorName);\n }\n\n /**\n * Whether the required field is empty.\n */\n public async hasRequiredError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('required');\n }\n\n /**\n * Whether the field has more characters than allowed.\n */\n public async hasMaxLengthError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('maxlength');\n }\n\n /**\n * Whether the field has fewer characters than allowed.\n */\n public async hasMinLengthError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('minlength');\n }\n\n /**\n * Whether the field is set to an invalid email address.\n */\n public async hasEmailError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('email');\n }\n\n /**\n * Whether the field is set to an invalid URL.\n */\n public async hasUrlError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('url');\n }\n\n /**\n * Whether the field is set to an invalid date.\n */\n public async hasInvalidDateError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('invalidDate');\n }\n\n /**\n * Whether the field is set to an invalid minimum date.\n */\n public async hasMinDateError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('minDate');\n }\n\n /**\n * Whether the field is set to an invalid maximum date.\n */\n public async hasMaxDateError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('maxDate');\n }\n\n /**\n * Whether the field is set to an invalid phone number.\n */\n public async hasPhoneFieldError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('phone');\n }\n\n /**\n * Whether the field is set to an invalid time.\n */\n public async hasTimeError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('time');\n }\n\n /**\n * Indicates whether the input box has disabled styles applied.\n */\n public async getDisabled(): Promise<boolean> {\n const wrapper = await this.#getWrapper();\n\n return wrapper.hasClass('sky-input-box-disabled');\n }\n\n /**\n * Gets the text for the input box label.\n */\n public async getLabelText(): Promise<string> {\n const label = await this.#getLabel();\n\n return this.#getElementTextOrDefault(label);\n }\n\n /**\n * Gets the help popover for the input box or throws an error if\n * the help popover is not configured.\n */\n public async getHelpPopover(): Promise<SkyPopoverHarness> {\n const helpPopover = await this.locatorForOptional(\n new HarnessPredicate(SkyPopoverHarness, {\n ancestor: '.sky-control-help',\n }),\n )();\n\n if (!helpPopover) {\n throw new Error('The input box does not have a help popover configured.');\n }\n\n return helpPopover;\n }\n\n /**2\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<\n TemplateRef<unknown> | string | undefined\n > {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text for the input box.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return this.#getElementTextOrDefault(hintText);\n }\n\n /**\n * Indicates whether the input box has stacked styles applied.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return host.hasClass('sky-margin-stacked-lg');\n }\n\n async #getElementTextOrDefault(el: TestElement | null): Promise<string> {\n return (await el?.text())?.trim() ?? '';\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX checkbox component.\n * @internal\n * @deprecated Use `SkyCheckboxHarness` instead.\n */\nexport class SkyCheckboxFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-checkbox',\n );\n }\n\n /**\n * A flag indicating whether the checkbox is currently selected.\n */\n public get selected(): boolean {\n return this.#getCheckboxInputEl().nativeElement.checked;\n }\n\n /**\n * The checkbox's label\n */\n public get labelText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('label.sky-checkbox-wrapper')),\n );\n }\n\n /**\n * The checkbox's icon type\n */\n public get iconType(): string | undefined {\n const classList = this.#debugEl.query(By.css('.fa.sky-icon'))?.nativeElement\n .classList;\n\n for (let i = 0, n = classList?.length; i < n; i++) {\n const cls = classList.item(i);\n\n if (cls.indexOf('fa-') === 0) {\n return cls.substr(3);\n }\n }\n return;\n }\n\n /**\n * The checkbox's type.\n */\n public get checkboxType(): string | undefined {\n const classList = this.#getCheckboxBoxEl().nativeElement.classList;\n\n if (classList.contains('sky-switch-control-danger')) {\n return 'danger';\n }\n\n if (classList.contains('sky-switch-control-info')) {\n return 'info';\n }\n\n if (classList.contains('sky-switch-control-success')) {\n return 'success';\n }\n\n if (classList.contains('sky-switch-control-warning')) {\n return 'warning';\n }\n\n return undefined;\n }\n\n /**\n * A flag indicating whether the checkbox is currently disabled.\n */\n public get disabled(): boolean {\n return this.#getCheckboxInputEl().nativeElement.disabled;\n }\n\n /**\n * Selects the checkbox.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n /**\n * Deselects the checkbox.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n #clickCheckboxLabelEl(): void {\n this.#debugEl\n .query(By.css('label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckboxInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-checkbox-wrapper input'));\n }\n\n #getCheckboxBoxEl(): DebugElement {\n return this.#debugEl.query(By.css('label.sky-checkbox-wrapper span'));\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the checkbox label.\n */\n public async getText(): Promise<string> {\n return (await this.#getLabelContent()).text();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a `labelText` checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label-text-label';\n\n #getLabelContent = this.locatorForOptional('.sky-switch-label');\n\n /**\n * Gets the text content of the `labelText` checkbox label.\n */\n public async getText(): Promise<string | undefined> {\n return (await this.#getLabelContent())?.text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\nimport { SkyCheckboxLabelHarness } from './checkbox-label-harness';\nimport { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';\n\n/**\n * Harness for interacting with a checkbox component in tests.\n */\nexport class SkyCheckboxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox';\n\n #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');\n\n #getInput = this.locatorFor('input.sky-checkbox-input');\n\n #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);\n\n #getLabelTextLabel = this.locatorForOptional(\n SkyCheckboxLabelTextLabelHarness,\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxHarnessFilters,\n ): HarnessPredicate<SkyCheckboxHarness> {\n return SkyCheckboxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the checkbox.\n */\n public async blur(): Promise<void> {\n return (await this.#getInput()).blur();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the checkbox.\n */\n public async focus(): Promise<void> {\n return (await this.#getInput()).focus();\n }\n\n /**\n * Gets the checkbox's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the checkbox's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n return content as string | undefined;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (labelTextLabel) {\n const text = await labelTextLabel.getText();\n const ariaLabel = await this.getAriaLabel();\n\n // if labelText is set, ariaLabel will never return null\n return text || ariaLabel!;\n } else {\n return label?.getText();\n }\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelIsHidden` is only supported when setting the checkbox label via the `labelText` input.',\n );\n } else {\n return !(await labelTextLabel?.getText());\n }\n }\n\n /**\n * Gets the checkbox's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets the checkbox's name.\n */\n public async getName(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Gets the checkbox's value.\n */\n public async getValue(): Promise<string | null> {\n return (await this.#getInput()).getProperty<string | null>('value');\n }\n\n /**\n * Whether the checkbox displays custom error.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the checkbox displays an error that it is required.\n */\n public async hasRequiredError(): Promise<boolean> {\n return (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox is checked.\n */\n public async isChecked(): Promise<boolean> {\n return (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the checkbox is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the checkbox is focused.\n */\n public async isFocused(): Promise<boolean> {\n return (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the checkbox is required.\n */\n public async isRequired(): Promise<boolean> {\n const value = await (await this.#getInput()).getAttribute('required');\n return value !== null;\n }\n\n /**\n * Whether the checkbox is stacked.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-margin-stacked-lg');\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n\n async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the checkbox because it is disabled.');\n } else {\n await (await this.#getInput()).click();\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport {\n SkyCheckboxGroupHeadingLevel,\n SkyCheckboxGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxGroupHarnessFilters } from './checkbox-group-harness-filters';\nimport { SkyCheckboxHarness } from './checkbox-harness';\n\n/**\n * Harness for interacting with a checkbox group component in tests.\n */\nexport class SkyCheckboxGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-group';\n\n #getCheckboxes = this.locatorForAll(SkyCheckboxHarness);\n #getHeading = this.locatorFor('.sky-control-label');\n #getHeadingWrapper = this.locatorFor('.sky-control-label span');\n #getHintText = this.locatorForOptional('.sky-checkbox-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-checkbox-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorFor(\n 'legend h3,h4,h5,.sky-checkbox-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxGroupHarnessFilters,\n ): HarnessPredicate<SkyCheckboxGroupHarness> {\n return SkyCheckboxGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets an array of harnesses for the checkboxes in the checkbox group.\n */\n public async getCheckboxes(): Promise<SkyCheckboxHarness[]> {\n return await this.#getCheckboxes();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n return content as string | undefined;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the checkbox group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return (await this.#getLegendHeading()).text();\n }\n\n /**\n * Gets the checkbox group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return (await this.#getHeading()).hasClass('sky-screen-reader-only');\n }\n\n /**\n * The semantic heading level used for the checkbox group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyCheckboxGroupHeadingLevel | undefined\n > {\n const heading = await this.#getLegendHeading();\n const h3 = await heading.matchesSelector('h3');\n const h4 = await heading.matchesSelector('h4');\n const h5 = await heading.matchesSelector('h5');\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyCheckboxGroupHeadingStyle> {\n const heading = await this.#getLegendHeading();\n\n const isHeadingStyle3 = await heading.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Whether the checkbox group is required.\n */\n public async getRequired(): Promise<boolean> {\n const headingWrapper = await this.#getHeadingWrapper();\n\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the checkbox group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-margin-stacked-lg')) && !!label) ||\n ((await host.hasClass('sky-margin-stacked-xl')) && !!heading)\n );\n }\n\n /**\n * Whether all the checkboxes in a required group are unchecked.\n */\n public async hasRequiredError(): Promise<boolean> {\n return (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(\n SkyFormErrorsHarness.with({\n dataSkyId: 'checkbox-group-form-errors',\n }),\n )();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-checkbox-group > .sky-control-label',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX radio buttons within a radio group.\n * @internal\n */\nexport class SkyRadioFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-radio-group',\n );\n }\n\n /**\n * The selected radio button value.\n */\n public get value(): string {\n const selectedRadio = this.#debugEl.query(\n By.css('sky-radio input:checked'),\n );\n const selectedValue = selectedRadio && selectedRadio.nativeElement.value;\n\n return selectedValue;\n }\n\n /**\n * Set the selected radio button value.\n */\n public set value(value: string) {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n allRadioInputs.forEach((input, index) => {\n if (input.nativeElement.value === value) {\n input.nativeElement.checked = true;\n } else {\n input.nativeElement.checked = false;\n }\n });\n }\n\n /**\n * A flag indicating if every radio button in the radio group is disabled.\n */\n public get disabled(): boolean {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n for (let i = 0; i < allRadioButtons.length; i++) {\n if (!this.#radioButtonDisabled(i)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set the disabled value for all radio buttons.\n */\n public set disabled(value: boolean) {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n allRadioButtons.forEach((button, index) => {\n this.#setRadioButtonDisabled(index, value);\n });\n }\n\n #getAllSkyRadioButtonEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio'));\n }\n\n #getAllRadioInputEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio input'));\n }\n\n #getRadioButtonInputEl(index: number): DebugElement | undefined {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n if (allRadioInputs && allRadioInputs[index]) {\n return allRadioInputs[index];\n }\n /* istanbul ignore next */\n return;\n }\n\n #radioButtonDisabled(index: number): boolean {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n return radioButton && radioButton.nativeElement.disabled;\n }\n\n #setRadioButtonDisabled(index: number, value: boolean): void {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n /* istanbul ignore else */\n if (radioButton) {\n radioButton.nativeElement.disabled = value;\n\n this.#fixture.detectChanges();\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a radio label component in tests.\n * @internal\n */\nexport class SkyRadioLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the radio label.\n */\n public async getText(): Promise<string> {\n return (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\nimport { SkyRadioLabelHarness } from './radio-label-harness';\n\n/**\n * Harness for interacting with a radio button component in tests.\n */\nexport class SkyRadioHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio';\n\n #getHintText = this.locatorForOptional('.sky-radio-hint-text');\n\n #getInput = this.locatorFor('input.sky-radio-input');\n\n #getLabel = this.locatorForOptional(SkyRadioLabelHarness);\n\n #getLabelText = this.locatorForOptional(\n 'span.sky-switch-label.sky-radio-label-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioHarnessFilters,\n ): HarnessPredicate<SkyRadioHarness> {\n return SkyRadioHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the radio button.\n */\n public async blur(): Promise<void> {\n return (await this.#getInput()).blur();\n }\n\n /**\n * Puts the radio button in a checked state if it is currently unchecked.\n */\n public async check(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not check the radio button because it is disabled.',\n );\n } else if (!(await this.isChecked())) {\n await (await this.#getInput()).click();\n }\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Focuses the radio button.\n */\n public async focus(): Promise<void> {\n return (await this.#getInput()).focus();\n }\n\n /**\n * Gets the radio button's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the radio button's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n /* istanbul ignore if */\n if (typeof content === 'object') {\n throw Error('Unexpected template ref');\n }\n\n return content;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the radio button's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelIsHidden` is only supported when setting the radio label via the `labelText` input.',\n );\n } else {\n return !!(await labelText?.hasClass('sky-screen-reader-only'));\n }\n }\n\n /**\n * Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await this.#getLabelText();\n\n if (labelText) {\n return labelText.text();\n } else {\n return (await this.#getLabel())?.getText();\n }\n }\n\n /**\n * Gets the radio button's name.\n */\n public async getName(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Whether the radio button is checked.\n */\n public async isChecked(): Promise<boolean> {\n return (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the radio button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the radio button is focused.\n */\n public async isFocused(): Promise<boolean> {\n return (await this.#getInput()).isFocused();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport {\n SkyRadioGroupHeadingLevel,\n SkyRadioGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyRadioGroupHarnessFilters } from './radio-group-harness-filters';\nimport { SkyRadioHarness } from './radio-harness';\n\n/**\n * Harness for interacting with a radio group component in tests.\n */\nexport class SkyRadioGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-group';\n\n #getH3 = this.locatorForOptional('legend h3');\n #getH4 = this.locatorForOptional('legend h4');\n #getH5 = this.locatorForOptional('legend h5');\n #getHeading = this.locatorFor('.sky-control-label');\n #getHeadingText = this.locatorForOptional(\n 'legend .sky-radio-group-heading-text',\n );\n #getHintText = this.locatorForOptional('.sky-radio-group-hint-text');\n #getRadioButtons = this.locatorForAll(SkyRadioHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioGroupHarnessFilters,\n ): HarnessPredicate<SkyRadioGroupHarness> {\n return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return (await this.#getHeading()).hasClass('sky-screen-reader-only');\n }\n\n /**\n * The semantic heading level used for the radio group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyRadioGroupHeadingLevel | undefined\n > {\n const h3 = await this.#getH3();\n const h4 = await this.#getH4();\n const h5 = await this.#getH5();\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the radio group.\n */\n public async getHeadingStyle(): Promise<SkyRadioGroupHeadingStyle> {\n const headingOrLabel =\n (await this.#getH3()) ||\n (await this.#getH4()) ||\n (await this.#getH5()) ||\n (await this.#getHeadingText());\n\n const isHeadingStyle3 =\n await headingOrLabel?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 =\n await headingOrLabel?.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Gets the radio group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return (await this.#getHeading()).text();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n /* istanbul ignore if */\n if (typeof content === 'object') {\n throw Error('Unexpected template ref');\n }\n\n return content;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the radio group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets an array of harnesses for the radio buttons in the radio group.\n */\n public async getRadioButtons(): Promise<SkyRadioHarness[]> {\n return await this.#getRadioButtons();\n }\n\n /**\n * Whether the radio group is required.\n */\n public async getRequired(): Promise<boolean> {\n const heading = await this.#getHeading();\n\n return await heading.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the radio group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getH3()) || (await this.#getH4()) || (await this.#getH5());\n const label = await this.#getHeadingText();\n\n return (\n ((await host.hasClass('sky-margin-stacked-lg')) && !!label) ||\n ((await host.hasClass('sky-margin-stacked-xl')) && !!heading)\n );\n }\n\n /**\n * Whether the radio group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-radio-group > .sky-radio-group-label-wrapper',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-forms-testing.mjs","sources":["../../../../../libs/components/forms/testing/src/character-counter/character-counter-indicator-harness.ts","../../../../../libs/components/forms/testing/src/form-error/form-error-harness.ts","../../../../../libs/components/forms/testing/src/form-error/form-errors-harness.ts","../../../../../libs/components/forms/testing/src/input-box/input-box-harness.ts","../../../../../libs/components/forms/testing/src/checkbox-fixture.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-label-harness.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-label-text-label.harness.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-harness.ts","../../../../../libs/components/forms/testing/src/checkbox/checkbox-group-harness.ts","../../../../../libs/components/forms/testing/src/radio-fixture.ts","../../../../../libs/components/forms/testing/src/radio/radio-label-harness.ts","../../../../../libs/components/forms/testing/src/radio/radio-harness.ts","../../../../../libs/components/forms/testing/src/radio/radio-group-harness.ts","../../../../../libs/components/forms/testing/src/skyux-forms-testing.ts"],"sourcesContent":["import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyCharacterCounterIndicatorHarnessFilters } from './character-counter-indicator-harness-filters';\n\ntype LabelParts = {\n count: number;\n limit: number;\n};\n\n/**\n * Harness for interacting with a character counter indicator component in tests.\n */\nexport class SkyCharacterCounterIndicatorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-character-counter-indicator';\n\n #getLabel = this.locatorFor('.sky-character-count-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCharacterCounterIndicatorHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCharacterCounterIndicatorHarnessFilters,\n ): HarnessPredicate<SkyCharacterCounterIndicatorHarness> {\n return SkyCharacterCounterIndicatorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the current character count.\n */\n public async getCharacterCount(): Promise<number> {\n return (await this.#getLabelParts()).count;\n }\n\n /**\n * Gets the character counter limit.\n */\n public async getCharacterCountLimit(): Promise<number> {\n return (await this.#getLabelParts()).limit;\n }\n\n /**\n * Indicates whether the character counter is in an error state because the current character\n * count is greater than the limit.\n */\n public async isOverLimit(): Promise<boolean> {\n return (await this.#getLabel()).hasClass('sky-error-label');\n }\n\n async #getLabelParts(): Promise<LabelParts> {\n const label = await this.#getLabel();\n const textParts = (await label.text()).split('/');\n\n let labelParts: LabelParts | undefined;\n\n if (textParts.length === 2) {\n labelParts = {\n count: +textParts[0].trim(),\n limit: +textParts[1].trim(),\n };\n }\n\n if (labelParts && !isNaN(labelParts.count) && !isNaN(labelParts.limit)) {\n return labelParts;\n }\n\n throw new Error(\n 'The character counter indicator does not contain text in the expected format.',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarnessFilters } from './form-error-harness.filters';\n\nexport class SkyFormErrorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorHarnessFilters,\n ): HarnessPredicate<SkyFormErrorHarness> {\n return SkyFormErrorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the error name.\n */\n public async getErrorName(): Promise<string | null> {\n return (await this.host()).getAttribute('errorName');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarness } from './form-error-harness';\nimport { SkyFormErrorsHarnessFilters } from './form-errors-harness.filters';\n\nexport class SkyFormErrorsHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-errors';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorsHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorsHarnessFilters,\n ): HarnessPredicate<SkyFormErrorsHarness> {\n return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of all errors fired.\n */\n public async getFormErrors(): Promise<{ errorName: string | null }[]> {\n const formErrorHarnesses = await this.locatorForAll(\n SkyFormErrorHarness.with({}),\n )();\n\n return Promise.all(\n formErrorHarnesses.map(async (formError) => {\n return { errorName: await formError.getErrorName() };\n }),\n );\n }\n\n /**\n * Whether an error with the given name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n const formErrors = await this.getFormErrors();\n return formErrors.some((error) => {\n return error.errorName === errorName;\n });\n }\n}\n","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { TemplateRef } from '@angular/core';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nimport { SkyPopoverHarness } from '@skyux/popovers/testing';\n\nimport { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyInputBoxHarnessFilters } from './input-box-harness-filters';\n\n/**\n * Harness for interacting with an input box component in tests.\n */\nexport class SkyInputBoxHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-input-box';\n\n #getHintText = this.locatorForOptional('.sky-input-box-hint-text');\n #getLabel = this.locatorForOptional('.sky-control-label');\n #getWrapper = this.locatorFor('.sky-input-box');\n\n async #getFormError(): Promise<SkyFormErrorsHarness> {\n return this.locatorFor(SkyFormErrorsHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInputBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyInputBoxHarnessFilters,\n ): HarnessPredicate<SkyInputBoxHarness> {\n return SkyInputBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the character counter indicator for the input box or throws an error if\n * a character limit is not specified.\n */\n public async getCharacterCounter(): Promise<SkyCharacterCounterIndicatorHarness> {\n const characterCounter = await this.locatorForOptional(\n new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {\n ancestor: '.sky-input-box-label-wrapper',\n }),\n )();\n\n if (!characterCounter) {\n throw new Error(\n 'The input box does not have a character limit specified.',\n );\n }\n\n return characterCounter;\n }\n\n /**\n * Gets a list of status indicator harnesses for errors not automatically\n * handled by input box.\n */\n public async getCustomErrors(): Promise<SkyStatusIndicatorHarness[]> {\n const errors = await this.locatorForAll(\n new HarnessPredicate(SkyStatusIndicatorHarness, {\n selector:\n 'sky-status-indicator:not(sky-form-error sky-status-indicator)',\n }),\n )();\n\n return errors;\n }\n\n /**\n * Whether the custom error is triggered.\n */\n public async hasCustomFormError(errorName: string): Promise<boolean> {\n return (await this.#getFormError()).hasError(errorName);\n }\n\n /**\n * Whether the required field is empty.\n */\n public async hasRequiredError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('required');\n }\n\n /**\n * Whether the field has more characters than allowed.\n */\n public async hasMaxLengthError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('maxlength');\n }\n\n /**\n * Whether the field has fewer characters than allowed.\n */\n public async hasMinLengthError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('minlength');\n }\n\n /**\n * Whether the field is set to an invalid email address.\n */\n public async hasEmailError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('email');\n }\n\n /**\n * Whether the field is set to an invalid URL.\n */\n public async hasUrlError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('url');\n }\n\n /**\n * Whether the field is set to an invalid date.\n */\n public async hasInvalidDateError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('invalidDate');\n }\n\n /**\n * Whether the field is set to an invalid minimum date.\n */\n public async hasMinDateError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('minDate');\n }\n\n /**\n * Whether the field is set to an invalid maximum date.\n */\n public async hasMaxDateError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('maxDate');\n }\n\n /**\n * Whether the field is set to an invalid phone number.\n */\n public async hasPhoneFieldError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('phone');\n }\n\n /**\n * Whether the field is set to an invalid time.\n */\n public async hasTimeError(): Promise<boolean> {\n return (await this.#getFormError()).hasError('time');\n }\n\n /**\n * Indicates whether the input box has disabled styles applied.\n */\n public async getDisabled(): Promise<boolean> {\n const wrapper = await this.#getWrapper();\n\n return wrapper.hasClass('sky-input-box-disabled');\n }\n\n /**\n * Gets the text for the input box label.\n */\n public async getLabelText(): Promise<string> {\n const label = await this.#getLabel();\n\n return this.#getElementTextOrDefault(label);\n }\n\n /**\n * Gets the help popover for the input box or throws an error if\n * the help popover is not configured.\n */\n public async getHelpPopover(): Promise<SkyPopoverHarness> {\n const helpPopover = await this.locatorForOptional(\n new HarnessPredicate(SkyPopoverHarness, {\n ancestor: '.sky-control-help',\n }),\n )();\n\n if (!helpPopover) {\n throw new Error('The input box does not have a help popover configured.');\n }\n\n return helpPopover;\n }\n\n /**2\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<\n TemplateRef<unknown> | string | undefined\n > {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text for the input box.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return this.#getElementTextOrDefault(hintText);\n }\n\n /**\n * Indicates whether the input box has stacked styles applied.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return host.hasClass('sky-margin-stacked-lg');\n }\n\n async #getElementTextOrDefault(el: TestElement | null): Promise<string> {\n return (await el?.text())?.trim() ?? '';\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX checkbox component.\n * @internal\n * @deprecated Use `SkyCheckboxHarness` instead.\n */\nexport class SkyCheckboxFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-checkbox',\n );\n }\n\n /**\n * A flag indicating whether the checkbox is currently selected.\n */\n public get selected(): boolean {\n return this.#getCheckboxInputEl().nativeElement.checked;\n }\n\n /**\n * The checkbox's label\n */\n public get labelText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('label.sky-checkbox-wrapper')),\n );\n }\n\n /**\n * The checkbox's icon type\n */\n public get iconType(): string | undefined {\n const classList = this.#debugEl.query(By.css('.fa.sky-icon'))?.nativeElement\n .classList;\n\n for (let i = 0, n = classList?.length; i < n; i++) {\n const cls = classList.item(i);\n\n if (cls.indexOf('fa-') === 0) {\n return cls.substr(3);\n }\n }\n return;\n }\n\n /**\n * The checkbox's type.\n */\n public get checkboxType(): string | undefined {\n const classList = this.#getCheckboxBoxEl().nativeElement.classList;\n\n if (classList.contains('sky-switch-control-danger')) {\n return 'danger';\n }\n\n if (classList.contains('sky-switch-control-info')) {\n return 'info';\n }\n\n if (classList.contains('sky-switch-control-success')) {\n return 'success';\n }\n\n if (classList.contains('sky-switch-control-warning')) {\n return 'warning';\n }\n\n return undefined;\n }\n\n /**\n * A flag indicating whether the checkbox is currently disabled.\n */\n public get disabled(): boolean {\n return this.#getCheckboxInputEl().nativeElement.disabled;\n }\n\n /**\n * Selects the checkbox.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n /**\n * Deselects the checkbox.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n #clickCheckboxLabelEl(): void {\n this.#debugEl\n .query(By.css('label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckboxInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-checkbox-wrapper input'));\n }\n\n #getCheckboxBoxEl(): DebugElement {\n return this.#debugEl.query(By.css('label.sky-checkbox-wrapper span'));\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the checkbox label.\n */\n public async getText(): Promise<string> {\n return (await this.#getLabelContent()).text();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a `labelText` checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label-text-label';\n\n #getLabelContent = this.locatorForOptional('.sky-switch-label');\n\n /**\n * Gets the text content of the `labelText` checkbox label.\n */\n public async getText(): Promise<string | undefined> {\n return (await this.#getLabelContent())?.text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\nimport { SkyCheckboxLabelHarness } from './checkbox-label-harness';\nimport { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';\n\n/**\n * Harness for interacting with a checkbox component in tests.\n */\nexport class SkyCheckboxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox';\n\n #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');\n\n #getInput = this.locatorFor('input.sky-checkbox-input');\n\n #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);\n\n #getLabelTextLabel = this.locatorForOptional(\n SkyCheckboxLabelTextLabelHarness,\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxHarnessFilters,\n ): HarnessPredicate<SkyCheckboxHarness> {\n return SkyCheckboxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the checkbox.\n */\n public async blur(): Promise<void> {\n return (await this.#getInput()).blur();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the checkbox.\n */\n public async focus(): Promise<void> {\n return (await this.#getInput()).focus();\n }\n\n /**\n * Gets the checkbox's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the checkbox's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n return content as string | undefined;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (labelTextLabel) {\n const text = await labelTextLabel.getText();\n const ariaLabel = await this.getAriaLabel();\n\n // if labelText is set, ariaLabel will never return null\n return text || ariaLabel!;\n } else {\n return label?.getText();\n }\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelIsHidden` is only supported when setting the checkbox label via the `labelText` input.',\n );\n } else {\n return !(await labelTextLabel?.getText());\n }\n }\n\n /**\n * Gets the checkbox's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets the checkbox's name.\n */\n public async getName(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Gets the checkbox's value.\n */\n public async getValue(): Promise<string | null> {\n return (await this.#getInput()).getProperty<string | null>('value');\n }\n\n /**\n * Whether the checkbox displays custom error.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the checkbox displays an error that it is required.\n */\n public async hasRequiredError(): Promise<boolean> {\n return (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox is checked.\n */\n public async isChecked(): Promise<boolean> {\n return (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the checkbox is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the checkbox is focused.\n */\n public async isFocused(): Promise<boolean> {\n return (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the checkbox is required.\n */\n public async isRequired(): Promise<boolean> {\n const value = await (await this.#getInput()).getAttribute('required');\n return value !== null;\n }\n\n /**\n * Whether the checkbox is stacked.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-margin-stacked-lg');\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n\n async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the checkbox because it is disabled.');\n } else {\n await (await this.#getInput()).click();\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport {\n SkyCheckboxGroupHeadingLevel,\n SkyCheckboxGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxGroupHarnessFilters } from './checkbox-group-harness-filters';\nimport { SkyCheckboxHarness } from './checkbox-harness';\n\n/**\n * Harness for interacting with a checkbox group component in tests.\n */\nexport class SkyCheckboxGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-group';\n\n #getCheckboxes = this.locatorForAll(SkyCheckboxHarness);\n #getHeading = this.locatorFor('.sky-control-label');\n #getHeadingWrapper = this.locatorFor('.sky-control-label span');\n #getHintText = this.locatorForOptional('.sky-checkbox-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-checkbox-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorFor(\n 'legend h3,h4,h5,.sky-checkbox-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxGroupHarnessFilters,\n ): HarnessPredicate<SkyCheckboxGroupHarness> {\n return SkyCheckboxGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets an array of harnesses for the checkboxes in the checkbox group.\n */\n public async getCheckboxes(): Promise<SkyCheckboxHarness[]> {\n return await this.#getCheckboxes();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n return content as string | undefined;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the checkbox group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return (await this.#getLegendHeading()).text();\n }\n\n /**\n * Gets the checkbox group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return (await this.#getHeading()).hasClass('sky-screen-reader-only');\n }\n\n /**\n * The semantic heading level used for the checkbox group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyCheckboxGroupHeadingLevel | undefined\n > {\n const heading = await this.#getLegendHeading();\n const h3 = await heading.matchesSelector('h3');\n const h4 = await heading.matchesSelector('h4');\n const h5 = await heading.matchesSelector('h5');\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyCheckboxGroupHeadingStyle> {\n const heading = await this.#getLegendHeading();\n\n const isHeadingStyle3 = await heading.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Whether the checkbox group is required.\n */\n public async getRequired(): Promise<boolean> {\n const headingWrapper = await this.#getHeadingWrapper();\n\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the checkbox group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-margin-stacked-lg')) && !!label) ||\n ((await host.hasClass('sky-margin-stacked-xl')) && !!heading)\n );\n }\n\n /**\n * Whether all the checkboxes in a required group are unchecked.\n */\n public async hasRequiredError(): Promise<boolean> {\n return (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(\n SkyFormErrorsHarness.with({\n dataSkyId: 'checkbox-group-form-errors',\n }),\n )();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-checkbox-group > .sky-control-label',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX radio buttons within a radio group.\n * @internal\n */\nexport class SkyRadioFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-radio-group',\n );\n }\n\n /**\n * The selected radio button value.\n */\n public get value(): string {\n const selectedRadio = this.#debugEl.query(\n By.css('sky-radio input:checked'),\n );\n const selectedValue = selectedRadio && selectedRadio.nativeElement.value;\n\n return selectedValue;\n }\n\n /**\n * Set the selected radio button value.\n */\n public set value(value: string) {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n allRadioInputs.forEach((input, index) => {\n if (input.nativeElement.value === value) {\n input.nativeElement.checked = true;\n } else {\n input.nativeElement.checked = false;\n }\n });\n }\n\n /**\n * A flag indicating if every radio button in the radio group is disabled.\n */\n public get disabled(): boolean {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n for (let i = 0; i < allRadioButtons.length; i++) {\n if (!this.#radioButtonDisabled(i)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set the disabled value for all radio buttons.\n */\n public set disabled(value: boolean) {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n allRadioButtons.forEach((button, index) => {\n this.#setRadioButtonDisabled(index, value);\n });\n }\n\n #getAllSkyRadioButtonEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio'));\n }\n\n #getAllRadioInputEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio input'));\n }\n\n #getRadioButtonInputEl(index: number): DebugElement | undefined {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n if (allRadioInputs && allRadioInputs[index]) {\n return allRadioInputs[index];\n }\n /* istanbul ignore next */\n return;\n }\n\n #radioButtonDisabled(index: number): boolean {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n return radioButton && radioButton.nativeElement.disabled;\n }\n\n #setRadioButtonDisabled(index: number, value: boolean): void {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n /* istanbul ignore else */\n if (radioButton) {\n radioButton.nativeElement.disabled = value;\n\n this.#fixture.detectChanges();\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a radio label component in tests.\n * @internal\n */\nexport class SkyRadioLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the radio label.\n */\n public async getText(): Promise<string> {\n return (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\nimport { SkyRadioLabelHarness } from './radio-label-harness';\n\n/**\n * Harness for interacting with a radio button component in tests.\n */\nexport class SkyRadioHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio';\n\n #getHintText = this.locatorForOptional('.sky-radio-hint-text');\n\n #getInput = this.locatorFor('input.sky-radio-input');\n\n #getLabel = this.locatorForOptional(SkyRadioLabelHarness);\n\n #getLabelText = this.locatorForOptional(\n 'span.sky-switch-label.sky-radio-label-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioHarnessFilters,\n ): HarnessPredicate<SkyRadioHarness> {\n return SkyRadioHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the radio button.\n */\n public async blur(): Promise<void> {\n return (await this.#getInput()).blur();\n }\n\n /**\n * Puts the radio button in a checked state if it is currently unchecked.\n */\n public async check(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not check the radio button because it is disabled.',\n );\n } else if (!(await this.isChecked())) {\n await (await this.#getInput()).click();\n }\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Focuses the radio button.\n */\n public async focus(): Promise<void> {\n return (await this.#getInput()).focus();\n }\n\n /**\n * Gets the radio button's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the radio button's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n /* istanbul ignore if */\n if (typeof content === 'object') {\n throw Error('Unexpected template ref');\n }\n\n return content;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the radio button's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelIsHidden` is only supported when setting the radio label via the `labelText` input.',\n );\n } else {\n return !!(await labelText?.hasClass('sky-screen-reader-only'));\n }\n }\n\n /**\n * Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await this.#getLabelText();\n\n if (labelText) {\n return labelText.text();\n } else {\n return (await this.#getLabel())?.getText();\n }\n }\n\n /**\n * Gets the radio button's name.\n */\n public async getName(): Promise<string | null> {\n return (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Whether the radio button is checked.\n */\n public async isChecked(): Promise<boolean> {\n return (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the radio button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the radio button is focused.\n */\n public async isFocused(): Promise<boolean> {\n return (await this.#getInput()).isFocused();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport {\n SkyRadioGroupHeadingLevel,\n SkyRadioGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyRadioGroupHarnessFilters } from './radio-group-harness-filters';\nimport { SkyRadioHarness } from './radio-harness';\n\n/**\n * Harness for interacting with a radio group component in tests.\n */\nexport class SkyRadioGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-group';\n\n #getHeading = this.locatorForOptional('.sky-control-label');\n #getHeadingWrapper = this.locatorFor('.sky-control-label span');\n #getHintText = this.locatorForOptional('.sky-radio-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-radio-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorForOptional(\n 'legend h3,h4,h5,.sky-radio-group-heading-text',\n );\n #getRadioButtons = this.locatorForAll(SkyRadioHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioGroupHarnessFilters,\n ): HarnessPredicate<SkyRadioGroupHarness> {\n return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return (await this.#getHelpInline()).click();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return (\n (await this.#getHeading())?.hasClass('sky-screen-reader-only') ?? true\n );\n }\n\n /**\n * The semantic heading level used for the radio group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyRadioGroupHeadingLevel | undefined\n > {\n const h3 = await this.#getLegendH3();\n const h4 = await this.#getLegendH4();\n const h5 = await this.#getLegendH5();\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the radio group.\n */\n public async getHeadingStyle(): Promise<SkyRadioGroupHeadingStyle> {\n const headingOrLabel =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5()) ||\n (await this.#getLegendDefault());\n\n const isHeadingStyle3 =\n await headingOrLabel?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 =\n await headingOrLabel?.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Gets the radio group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return (await this.#getLegendHeading())?.text() ?? '';\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n const content = await (await this.#getHelpInline()).getPopoverContent();\n\n /* istanbul ignore if */\n if (typeof content === 'object') {\n throw Error('Unexpected template ref');\n }\n\n return content;\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the radio group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets an array of harnesses for the radio buttons in the radio group.\n */\n public async getRadioButtons(): Promise<SkyRadioHarness[]> {\n return await this.#getRadioButtons();\n }\n\n /**\n * Whether the radio group is required.\n */\n public async getRequired(): Promise<boolean> {\n const headingWrapper = await this.#getHeadingWrapper();\n\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the radio group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-margin-stacked-lg')) && !!label) ||\n ((await host.hasClass('sky-margin-stacked-xl')) && !!heading)\n );\n }\n\n /**\n * Whether the radio group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-radio-group > .sky-control-label',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|