@skyux/forms 11.22.0 → 11.24.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 +2925 -1719
- package/esm2022/lib/modules/checkbox/checkbox-group.component.mjs +2 -2
- package/esm2022/lib/modules/field-group/field-group.component.mjs +2 -2
- package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.mjs +3 -5
- package/esm2022/lib/modules/input-box/input-box.component.mjs +2 -2
- package/esm2022/lib/modules/radio/radio-group.component.mjs +2 -2
- package/esm2022/lib/modules/radio/radio.component.mjs +2 -2
- package/esm2022/lib/modules/toggle-switch/toggle-switch.component.mjs +3 -7
- package/esm2022/testing/legacy/checkbox-fixture.mjs +92 -0
- package/esm2022/testing/legacy/radio-fixture.mjs +85 -0
- package/esm2022/testing/modules/character-counter/character-counter-indicator-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/character-counter/character-counter-indicator-harness.mjs +53 -0
- package/esm2022/testing/modules/checkbox/checkbox-group-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/checkbox/checkbox-group-harness.mjs +158 -0
- package/esm2022/testing/modules/checkbox/checkbox-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/checkbox/checkbox-harness.mjs +196 -0
- package/esm2022/testing/modules/checkbox/checkbox-label-harness.mjs +19 -0
- package/esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.mjs +19 -0
- package/esm2022/testing/modules/field-group/field-group-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/field-group/field-group-harness.mjs +92 -0
- package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.mjs +45 -0
- package/esm2022/testing/modules/form-error/form-error-harness.filters.mjs +2 -0
- package/esm2022/testing/modules/form-error/form-error-harness.mjs +21 -0
- package/esm2022/testing/modules/form-error/form-errors-harness.filters.mjs +2 -0
- package/esm2022/testing/modules/form-error/form-errors-harness.mjs +34 -0
- package/esm2022/testing/modules/input-box/input-box-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/input-box/input-box-harness.mjs +188 -0
- package/esm2022/testing/modules/radio/radio-group-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/radio/radio-group-harness.mjs +156 -0
- package/esm2022/testing/modules/radio/radio-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/radio/radio-harness.mjs +147 -0
- package/esm2022/testing/modules/radio/radio-label-harness.mjs +19 -0
- package/esm2022/testing/public-api.mjs +15 -14
- package/fesm2022/skyux-forms-testing.mjs +144 -54
- package/fesm2022/skyux-forms-testing.mjs.map +1 -1
- package/fesm2022/skyux-forms.mjs +14 -20
- package/fesm2022/skyux-forms.mjs.map +1 -1
- package/package.json +9 -9
- package/testing/{radio-fixture.d.ts → legacy/radio-fixture.d.ts} +1 -0
- package/testing/modules/field-group/field-group-harness-filters.d.ts +7 -0
- package/testing/modules/field-group/field-group-harness.d.ts +57 -0
- package/testing/public-api.d.ts +24 -22
- package/esm2022/testing/character-counter/character-counter-indicator-harness-filters.mjs +0 -2
- package/esm2022/testing/character-counter/character-counter-indicator-harness.mjs +0 -53
- package/esm2022/testing/checkbox/checkbox-group-harness-filters.mjs +0 -2
- package/esm2022/testing/checkbox/checkbox-group-harness.mjs +0 -158
- package/esm2022/testing/checkbox/checkbox-harness-filters.mjs +0 -2
- package/esm2022/testing/checkbox/checkbox-harness.mjs +0 -196
- package/esm2022/testing/checkbox/checkbox-label-harness.mjs +0 -19
- package/esm2022/testing/checkbox/checkbox-label-text-label.harness.mjs +0 -19
- package/esm2022/testing/checkbox-fixture.mjs +0 -92
- package/esm2022/testing/file-drop/file-drop-harness-filters.mjs +0 -2
- package/esm2022/testing/file-drop/file-drop-harness.mjs +0 -45
- package/esm2022/testing/form-error/form-error-harness.filters.mjs +0 -2
- package/esm2022/testing/form-error/form-error-harness.mjs +0 -21
- package/esm2022/testing/form-error/form-errors-harness.filters.mjs +0 -2
- package/esm2022/testing/form-error/form-errors-harness.mjs +0 -34
- package/esm2022/testing/input-box/input-box-harness-filters.mjs +0 -2
- package/esm2022/testing/input-box/input-box-harness.mjs +0 -188
- package/esm2022/testing/radio/radio-group-harness-filters.mjs +0 -2
- package/esm2022/testing/radio/radio-group-harness.mjs +0 -157
- package/esm2022/testing/radio/radio-harness-filters.mjs +0 -2
- package/esm2022/testing/radio/radio-harness.mjs +0 -147
- package/esm2022/testing/radio/radio-label-harness.mjs +0 -19
- package/esm2022/testing/radio-fixture.mjs +0 -84
- /package/testing/{checkbox-fixture.d.ts → legacy/checkbox-fixture.d.ts} +0 -0
- /package/testing/{character-counter → modules/character-counter}/character-counter-indicator-harness-filters.d.ts +0 -0
- /package/testing/{character-counter → modules/character-counter}/character-counter-indicator-harness.d.ts +0 -0
- /package/testing/{checkbox → modules/checkbox}/checkbox-group-harness-filters.d.ts +0 -0
- /package/testing/{checkbox → modules/checkbox}/checkbox-group-harness.d.ts +0 -0
- /package/testing/{checkbox → modules/checkbox}/checkbox-harness-filters.d.ts +0 -0
- /package/testing/{checkbox → modules/checkbox}/checkbox-harness.d.ts +0 -0
- /package/testing/{checkbox → modules/checkbox}/checkbox-label-harness.d.ts +0 -0
- /package/testing/{checkbox → modules/checkbox}/checkbox-label-text-label.harness.d.ts +0 -0
- /package/testing/{file-drop → modules/file-attachment/file-drop}/file-drop-harness-filters.d.ts +0 -0
- /package/testing/{file-drop → modules/file-attachment/file-drop}/file-drop-harness.d.ts +0 -0
- /package/testing/{form-error → modules/form-error}/form-error-harness.d.ts +0 -0
- /package/testing/{form-error → modules/form-error}/form-error-harness.filters.d.ts +0 -0
- /package/testing/{form-error → modules/form-error}/form-errors-harness.d.ts +0 -0
- /package/testing/{form-error → modules/form-error}/form-errors-harness.filters.d.ts +0 -0
- /package/testing/{input-box → modules/input-box}/input-box-harness-filters.d.ts +0 -0
- /package/testing/{input-box → modules/input-box}/input-box-harness.d.ts +0 -0
- /package/testing/{radio → modules/radio}/radio-group-harness-filters.d.ts +0 -0
- /package/testing/{radio → modules/radio}/radio-group-harness.d.ts +0 -0
- /package/testing/{radio → modules/radio}/radio-harness-filters.d.ts +0 -0
- /package/testing/{radio → modules/radio}/radio-harness.d.ts +0 -0
- /package/testing/{radio → modules/radio}/radio-label-harness.d.ts +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
export class SkyFormErrorHarness extends SkyComponentHarness {
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
static { this.hostSelector = 'sky-form-error'; }
|
|
7
|
+
/**
|
|
8
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
9
|
+
* `SkyFormErrorHarness` that meets certain criteria
|
|
10
|
+
*/
|
|
11
|
+
static with(filters) {
|
|
12
|
+
return SkyFormErrorHarness.getDataSkyIdPredicate(filters);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Gets the error name.
|
|
16
|
+
*/
|
|
17
|
+
async getErrorName() {
|
|
18
|
+
return await (await this.host()).getAttribute('errorName');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9yLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFtQjtJQUMxRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsZ0JBQWdCLENBQUM7SUFFOUM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBbUM7UUFFbkMsT0FBTyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9ySGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2Zvcm0tZXJyb3ItaGFybmVzcy5maWx0ZXJzJztcblxuZXhwb3J0IGNsYXNzIFNreUZvcm1FcnJvckhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LWZvcm0tZXJyb3InO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGb3JtRXJyb3JIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lGb3JtRXJyb3JIYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lGb3JtRXJyb3JIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUZvcm1FcnJvckhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVycm9yIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JOYW1lKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmdldEF0dHJpYnV0ZSgnZXJyb3JOYW1lJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMtaGFybmVzcy5maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9ycy1oYXJuZXNzLmZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbi8qKlxuICogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBTa3lGb3JtRXJyb3JIYXJuZXNzYCBpbnN0YW5jZXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5Rm9ybUVycm9yc0hhcm5lc3NGaWx0ZXJzIGV4dGVuZHMgU2t5SGFybmVzc0ZpbHRlcnMge31cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
import { SkyFormErrorHarness } from './form-error-harness';
|
|
3
|
+
export class SkyFormErrorsHarness extends SkyComponentHarness {
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
static { this.hostSelector = 'sky-form-errors'; }
|
|
8
|
+
/**
|
|
9
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
10
|
+
* `SkyFormErrorsHarness` that meets certain criteria
|
|
11
|
+
*/
|
|
12
|
+
static with(filters) {
|
|
13
|
+
return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Gets a list of all errors fired.
|
|
17
|
+
*/
|
|
18
|
+
async getFormErrors() {
|
|
19
|
+
const formErrorHarnesses = await this.locatorForAll(SkyFormErrorHarness.with({}))();
|
|
20
|
+
return await Promise.all(formErrorHarnesses.map(async (formError) => {
|
|
21
|
+
return { errorName: await formError.getErrorName() };
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Whether an error with the given name has fired.
|
|
26
|
+
*/
|
|
27
|
+
async hasError(errorName) {
|
|
28
|
+
const formErrors = await this.getFormErrors();
|
|
29
|
+
return formErrors.some((error) => {
|
|
30
|
+
return error.errorName === errorName;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUczRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQzNEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxpQkFBaUIsQ0FBQztJQUUvQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFvQztRQUVwQyxPQUFPLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUNqRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQzdCLEVBQUUsQ0FBQztRQUVKLE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN0QixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFpQjtRQUNyQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMvQixPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvckhhcm5lc3MgfSBmcm9tICcuL2Zvcm0tZXJyb3ItaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2Zvcm0tZXJyb3JzLWhhcm5lc3MuZmlsdGVycyc7XG5cbmV4cG9ydCBjbGFzcyBTa3lGb3JtRXJyb3JzSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZm9ybS1lcnJvcnMnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGb3JtRXJyb3JzSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5Rm9ybUVycm9yc0hhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUZvcm1FcnJvcnNIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgbGlzdCBvZiBhbGwgZXJyb3JzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEZvcm1FcnJvcnMoKTogUHJvbWlzZTx7IGVycm9yTmFtZTogc3RyaW5nIHwgbnVsbCB9W10+IHtcbiAgICBjb25zdCBmb3JtRXJyb3JIYXJuZXNzZXMgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoXG4gICAgICBTa3lGb3JtRXJyb3JIYXJuZXNzLndpdGgoe30pLFxuICAgICkoKTtcblxuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1FcnJvckhhcm5lc3Nlcy5tYXAoYXN5bmMgKGZvcm1FcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4geyBlcnJvck5hbWU6IGF3YWl0IGZvcm1FcnJvci5nZXRFcnJvck5hbWUoKSB9O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFuIGVycm9yIHdpdGggdGhlIGdpdmVuIG5hbWUgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0Vycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZm9ybUVycm9ycyA9IGF3YWl0IHRoaXMuZ2V0Rm9ybUVycm9ycygpO1xuICAgIHJldHVybiBmb3JtRXJyb3JzLnNvbWUoKGVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gZXJyb3IuZXJyb3JOYW1lID09PSBlcnJvck5hbWU7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2lucHV0LWJveC9pbnB1dC1ib3gtaGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lIYXJuZXNzRmlsdGVycyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBTa3lJbnB1dEJveEhhcm5lc3MgaW5zdGFuY2VzLlxuICogQGludGVybmFsXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5SW5wdXRCb3hIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { HarnessPredicate } from '@angular/cdk/testing';
|
|
2
|
+
import { SkyQueryableComponentHarness } from '@skyux/core/testing';
|
|
3
|
+
import { SkyHelpInlineHarness } from '@skyux/help-inline/testing';
|
|
4
|
+
import { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';
|
|
5
|
+
import { SkyPopoverHarness } from '@skyux/popovers/testing';
|
|
6
|
+
import { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';
|
|
7
|
+
import { SkyFormErrorsHarness } from '../form-error/form-errors-harness';
|
|
8
|
+
/**
|
|
9
|
+
* Harness for interacting with an input box component in tests.
|
|
10
|
+
*/
|
|
11
|
+
export class SkyInputBoxHarness extends SkyQueryableComponentHarness {
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
static { this.hostSelector = 'sky-input-box'; }
|
|
16
|
+
#getHintText = this.locatorForOptional('.sky-input-box-hint-text');
|
|
17
|
+
#getLabel = this.locatorForOptional('.sky-control-label');
|
|
18
|
+
#getWrapper = this.locatorFor('.sky-input-box');
|
|
19
|
+
async #getFormError() {
|
|
20
|
+
return await this.locatorFor(SkyFormErrorsHarness)();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
24
|
+
* `SkyInputBoxHarness` that meets certain criteria.
|
|
25
|
+
*/
|
|
26
|
+
static with(filters) {
|
|
27
|
+
return SkyInputBoxHarness.getDataSkyIdPredicate(filters);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Clicks the help inline button.
|
|
31
|
+
*/
|
|
32
|
+
async clickHelpInline() {
|
|
33
|
+
await (await this.#getHelpInline()).click();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Gets the character counter indicator for the input box or throws an error if
|
|
37
|
+
* a character limit is not specified.
|
|
38
|
+
*/
|
|
39
|
+
async getCharacterCounter() {
|
|
40
|
+
const characterCounter = await this.locatorForOptional(new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {
|
|
41
|
+
ancestor: '.sky-input-box-label-wrapper',
|
|
42
|
+
}))();
|
|
43
|
+
if (!characterCounter) {
|
|
44
|
+
throw new Error('The input box does not have a character limit specified.');
|
|
45
|
+
}
|
|
46
|
+
return characterCounter;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Gets a list of status indicator harnesses for errors not automatically
|
|
50
|
+
* handled by input box.
|
|
51
|
+
*/
|
|
52
|
+
async getCustomErrors() {
|
|
53
|
+
const errors = await this.locatorForAll(new HarnessPredicate(SkyStatusIndicatorHarness, {
|
|
54
|
+
selector: 'sky-status-indicator:not(sky-form-error sky-status-indicator)',
|
|
55
|
+
}))();
|
|
56
|
+
return errors;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Whether the custom error is triggered.
|
|
60
|
+
*/
|
|
61
|
+
async hasCustomFormError(errorName) {
|
|
62
|
+
return await (await this.#getFormError()).hasError(errorName);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Whether the required field is empty.
|
|
66
|
+
*/
|
|
67
|
+
async hasRequiredError() {
|
|
68
|
+
return await (await this.#getFormError()).hasError('required');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Whether the field has more characters than allowed.
|
|
72
|
+
*/
|
|
73
|
+
async hasMaxLengthError() {
|
|
74
|
+
return await (await this.#getFormError()).hasError('maxlength');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Whether the field has fewer characters than allowed.
|
|
78
|
+
*/
|
|
79
|
+
async hasMinLengthError() {
|
|
80
|
+
return await (await this.#getFormError()).hasError('minlength');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Whether the field is set to an invalid email address.
|
|
84
|
+
*/
|
|
85
|
+
async hasEmailError() {
|
|
86
|
+
return await (await this.#getFormError()).hasError('email');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Whether the field is set to an invalid URL.
|
|
90
|
+
*/
|
|
91
|
+
async hasUrlError() {
|
|
92
|
+
return await (await this.#getFormError()).hasError('url');
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Whether the field is set to an invalid date.
|
|
96
|
+
*/
|
|
97
|
+
async hasInvalidDateError() {
|
|
98
|
+
return await (await this.#getFormError()).hasError('invalidDate');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Whether the field is set to an invalid minimum date.
|
|
102
|
+
*/
|
|
103
|
+
async hasMinDateError() {
|
|
104
|
+
return await (await this.#getFormError()).hasError('minDate');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Whether the field is set to an invalid maximum date.
|
|
108
|
+
*/
|
|
109
|
+
async hasMaxDateError() {
|
|
110
|
+
return await (await this.#getFormError()).hasError('maxDate');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Whether the field is set to an invalid phone number.
|
|
114
|
+
*/
|
|
115
|
+
async hasPhoneFieldError() {
|
|
116
|
+
return await (await this.#getFormError()).hasError('phone');
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Whether the field is set to an invalid time.
|
|
120
|
+
*/
|
|
121
|
+
async hasTimeError() {
|
|
122
|
+
return await (await this.#getFormError()).hasError('time');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Indicates whether the input box has disabled styles applied.
|
|
126
|
+
*/
|
|
127
|
+
async getDisabled() {
|
|
128
|
+
const wrapper = await this.#getWrapper();
|
|
129
|
+
return await wrapper.hasClass('sky-input-box-disabled');
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Gets the text for the input box label.
|
|
133
|
+
*/
|
|
134
|
+
async getLabelText() {
|
|
135
|
+
const label = await this.#getLabel();
|
|
136
|
+
return await this.#getElementTextOrDefault(label);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Gets the help popover for the input box or throws an error if
|
|
140
|
+
* the help popover is not configured.
|
|
141
|
+
*/
|
|
142
|
+
async getHelpPopover() {
|
|
143
|
+
const helpPopover = await this.locatorForOptional(new HarnessPredicate(SkyPopoverHarness, {
|
|
144
|
+
ancestor: '.sky-control-help',
|
|
145
|
+
}))();
|
|
146
|
+
if (!helpPopover) {
|
|
147
|
+
throw new Error('The input box does not have a help popover configured.');
|
|
148
|
+
}
|
|
149
|
+
return helpPopover;
|
|
150
|
+
}
|
|
151
|
+
/**2
|
|
152
|
+
* Gets the help popover content.
|
|
153
|
+
*/
|
|
154
|
+
async getHelpPopoverContent() {
|
|
155
|
+
return await (await this.#getHelpInline()).getPopoverContent();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Gets the help popover title.
|
|
159
|
+
*/
|
|
160
|
+
async getHelpPopoverTitle() {
|
|
161
|
+
return await (await this.#getHelpInline()).getPopoverTitle();
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Gets the hint text for the input box.
|
|
165
|
+
*/
|
|
166
|
+
async getHintText() {
|
|
167
|
+
const hintText = await this.#getHintText();
|
|
168
|
+
return await this.#getElementTextOrDefault(hintText);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Indicates whether the input box has stacked styles applied.
|
|
172
|
+
*/
|
|
173
|
+
async getStacked() {
|
|
174
|
+
const host = await this.host();
|
|
175
|
+
return await host.hasClass('sky-form-field-stacked');
|
|
176
|
+
}
|
|
177
|
+
async #getElementTextOrDefault(el) {
|
|
178
|
+
return (await el?.text())?.trim() ?? '';
|
|
179
|
+
}
|
|
180
|
+
async #getHelpInline() {
|
|
181
|
+
const harness = await this.locatorForOptional(SkyHelpInlineHarness)();
|
|
182
|
+
if (harness) {
|
|
183
|
+
return harness;
|
|
184
|
+
}
|
|
185
|
+
throw Error('No help inline found.');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9pbnB1dC1ib3gvaW5wdXQtYm94LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDL0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsNEJBQTRCO0lBQ2xFOztPQUVHO2FBQ1csaUJBQVksR0FBRyxlQUFlLENBQUM7SUFFN0MsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ25FLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMxRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBa0M7UUFFbEMsT0FBTyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUMxQixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUNwRCxJQUFJLGdCQUFnQixDQUFDLG1DQUFtQyxFQUFFO1lBQ3hELFFBQVEsRUFBRSw4QkFBOEI7U0FDekMsQ0FBQyxDQUNILEVBQUUsQ0FBQztRQUVKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUNyQyxJQUFJLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFO1lBQzlDLFFBQVEsRUFDTiwrREFBK0Q7U0FDbEUsQ0FBQyxDQUNILEVBQUUsQ0FBQztRQUVKLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUFpQjtRQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsYUFBYTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFekMsT0FBTyxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVyQyxPQUFPLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsY0FBYztRQUN6QixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDL0MsSUFBSSxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QyxRQUFRLEVBQUUsbUJBQW1CO1NBQzlCLENBQUMsQ0FDSCxFQUFFLENBQUM7UUFFSixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBR2hDLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFM0MsT0FBTyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQixPQUFPLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBc0I7UUFDbkQsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFFdEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlLCBUZXN0RWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lRdWVyeWFibGVDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreVN0YXR1c0luZGljYXRvckhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycy90ZXN0aW5nJztcbmltcG9ydCB7IFNreVBvcG92ZXJIYXJuZXNzIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9ySGFybmVzcyB9IGZyb20gJy4uL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLWluZGljYXRvci1oYXJuZXNzJztcbmltcG9ydCB7IFNreUZvcm1FcnJvcnNIYXJuZXNzIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1oYXJuZXNzJztcblxuaW1wb3J0IHsgU2t5SW5wdXRCb3hIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vaW5wdXQtYm94LWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhbiBpbnB1dCBib3ggY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5SW5wdXRCb3hIYXJuZXNzIGV4dGVuZHMgU2t5UXVlcnlhYmxlQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1pbnB1dC1ib3gnO1xuXG4gICNnZXRIaW50VGV4dCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LWlucHV0LWJveC1oaW50LXRleHQnKTtcbiAgI2dldExhYmVsID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktY29udHJvbC1sYWJlbCcpO1xuICAjZ2V0V3JhcHBlciA9IHRoaXMubG9jYXRvckZvcignLnNreS1pbnB1dC1ib3gnKTtcblxuICBhc3luYyAjZ2V0Rm9ybUVycm9yKCk6IFByb21pc2U8U2t5Rm9ybUVycm9yc0hhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFNreUZvcm1FcnJvcnNIYXJuZXNzKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUlucHV0Qm94SGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUlucHV0Qm94SGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5SW5wdXRCb3hIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUlucHV0Qm94SGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hhcmFjdGVyIGNvdW50ZXIgaW5kaWNhdG9yIGZvciB0aGUgaW5wdXQgYm94IG9yIHRocm93cyBhbiBlcnJvciBpZlxuICAgKiBhIGNoYXJhY3RlciBsaW1pdCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENoYXJhY3RlckNvdW50ZXIoKTogUHJvbWlzZTxTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9ySGFybmVzcz4ge1xuICAgIGNvbnN0IGNoYXJhY3RlckNvdW50ZXIgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAgIG5ldyBIYXJuZXNzUHJlZGljYXRlKFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JIYXJuZXNzLCB7XG4gICAgICAgIGFuY2VzdG9yOiAnLnNreS1pbnB1dC1ib3gtbGFiZWwtd3JhcHBlcicsXG4gICAgICB9KSxcbiAgICApKCk7XG5cbiAgICBpZiAoIWNoYXJhY3RlckNvdW50ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSBpbnB1dCBib3ggZG9lcyBub3QgaGF2ZSBhIGNoYXJhY3RlciBsaW1pdCBzcGVjaWZpZWQuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJhY3RlckNvdW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2Ygc3RhdHVzIGluZGljYXRvciBoYXJuZXNzZXMgZm9yIGVycm9ycyBub3QgYXV0b21hdGljYWxseVxuICAgKiBoYW5kbGVkIGJ5IGlucHV0IGJveC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDdXN0b21FcnJvcnMoKTogUHJvbWlzZTxTa3lTdGF0dXNJbmRpY2F0b3JIYXJuZXNzW10+IHtcbiAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoXG4gICAgICBuZXcgSGFybmVzc1ByZWRpY2F0ZShTa3lTdGF0dXNJbmRpY2F0b3JIYXJuZXNzLCB7XG4gICAgICAgIHNlbGVjdG9yOlxuICAgICAgICAgICdza3ktc3RhdHVzLWluZGljYXRvcjpub3Qoc2t5LWZvcm0tZXJyb3Igc2t5LXN0YXR1cy1pbmRpY2F0b3IpJyxcbiAgICAgIH0pLFxuICAgICkoKTtcblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VzdG9tIGVycm9yIGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNDdXN0b21Gb3JtRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcXVpcmVkIGZpZWxkIGlzIGVtcHR5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1JlcXVpcmVkRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgaGFzIG1vcmUgY2hhcmFjdGVycyB0aGFuIGFsbG93ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTWF4TGVuZ3RoRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ21heGxlbmd0aCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGhhcyBmZXdlciBjaGFyYWN0ZXJzIHRoYW4gYWxsb3dlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNaW5MZW5ndGhFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcignbWlubGVuZ3RoJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgaXMgc2V0IHRvIGFuIGludmFsaWQgZW1haWwgYWRkcmVzcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbWFpbEVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9yKCkpLmhhc0Vycm9yKCdlbWFpbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHNldCB0byBhbiBpbnZhbGlkIFVSTC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNVcmxFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcigndXJsJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgaXMgc2V0IHRvIGFuIGludmFsaWQgZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNJbnZhbGlkRGF0ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9yKCkpLmhhc0Vycm9yKCdpbnZhbGlkRGF0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHNldCB0byBhbiBpbnZhbGlkIG1pbmltdW0gZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNaW5EYXRlRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ21pbkRhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBpcyBzZXQgdG8gYW4gaW52YWxpZCBtYXhpbXVtIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTWF4RGF0ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9yKCkpLmhhc0Vycm9yKCdtYXhEYXRlJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgaXMgc2V0IHRvIGFuIGludmFsaWQgcGhvbmUgbnVtYmVyLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1Bob25lRmllbGRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcigncGhvbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBpcyBzZXQgdG8gYW4gaW52YWxpZCB0aW1lLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1RpbWVFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcigndGltZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBib3ggaGFzIGRpc2FibGVkIHN0eWxlcyBhcHBsaWVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldERpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBhd2FpdCB0aGlzLiNnZXRXcmFwcGVyKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgd3JhcHBlci5oYXNDbGFzcygnc2t5LWlucHV0LWJveC1kaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRleHQgZm9yIHRoZSBpbnB1dCBib3ggbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbCgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2dldEVsZW1lbnRUZXh0T3JEZWZhdWx0KGxhYmVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgZm9yIHRoZSBpbnB1dCBib3ggb3IgdGhyb3dzIGFuIGVycm9yIGlmXG4gICAqIHRoZSBoZWxwIHBvcG92ZXIgaXMgbm90IGNvbmZpZ3VyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXIoKTogUHJvbWlzZTxTa3lQb3BvdmVySGFybmVzcz4ge1xuICAgIGNvbnN0IGhlbHBQb3BvdmVyID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBuZXcgSGFybmVzc1ByZWRpY2F0ZShTa3lQb3BvdmVySGFybmVzcywge1xuICAgICAgICBhbmNlc3RvcjogJy5za3ktY29udHJvbC1oZWxwJyxcbiAgICAgIH0pLFxuICAgICkoKTtcblxuICAgIGlmICghaGVscFBvcG92ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGlucHV0IGJveCBkb2VzIG5vdCBoYXZlIGEgaGVscCBwb3BvdmVyIGNvbmZpZ3VyZWQuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhlbHBQb3BvdmVyO1xuICB9XG5cbiAgLyoqMlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxcbiAgICBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHN0cmluZyB8IHVuZGVmaW5lZFxuICA+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlckNvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoaW50IHRleHQgZm9yIHRoZSBpbnB1dCBib3guXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBoaW50VGV4dCA9IGF3YWl0IHRoaXMuI2dldEhpbnRUZXh0KCk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jZ2V0RWxlbWVudFRleHRPckRlZmF1bHQoaGludFRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBib3ggaGFzIHN0YWNrZWQgc3R5bGVzIGFwcGxpZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U3RhY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5ob3N0KCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaG9zdC5oYXNDbGFzcygnc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcpO1xuICB9XG5cbiAgYXN5bmMgI2dldEVsZW1lbnRUZXh0T3JEZWZhdWx0KGVsOiBUZXN0RWxlbWVudCB8IG51bGwpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgZWw/LnRleHQoKSk/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5SGVscElubGluZUhhcm5lc3MpKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ05vIGhlbHAgaW5saW5lIGZvdW5kLicpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGFybmVzcy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvcmFkaW8vcmFkaW8tZ3JvdXAtaGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lIYXJuZXNzRmlsdGVycyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBgU2t5UmFkaW9Hcm91cEhhcm5lc3NgIGluc3RhbmNlcy5cbiAqIEBpbnRlcm5hbFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIFNreVJhZGlvR3JvdXBIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
import { SkyHelpInlineHarness } from '@skyux/help-inline/testing';
|
|
3
|
+
import { SkyFormErrorsHarness } from '../form-error/form-errors-harness';
|
|
4
|
+
import { SkyRadioHarness } from './radio-harness';
|
|
5
|
+
/**
|
|
6
|
+
* Harness for interacting with a radio group component in tests.
|
|
7
|
+
*/
|
|
8
|
+
export class SkyRadioGroupHarness extends SkyComponentHarness {
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
static { this.hostSelector = 'sky-radio-group'; }
|
|
13
|
+
#getHeading = this.locatorFor('.sky-radio-group-legend span');
|
|
14
|
+
#getHeadingWrapper = this.locatorForOptional('.sky-radio-group-legend');
|
|
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');
|
|
21
|
+
#getRadioButtons = this.locatorForAll(SkyRadioHarness);
|
|
22
|
+
/**
|
|
23
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
24
|
+
* `SkyRadioGroupHarness` that meets certain criteria.
|
|
25
|
+
*/
|
|
26
|
+
static with(filters) {
|
|
27
|
+
return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Clicks the help inline button.
|
|
31
|
+
*/
|
|
32
|
+
async clickHelpInline() {
|
|
33
|
+
await (await this.#getHelpInline()).click();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Whether the heading is hidden.
|
|
37
|
+
*/
|
|
38
|
+
async getHeadingHidden() {
|
|
39
|
+
return await ((await this.#getHeadingWrapper())?.hasClass('sky-screen-reader-only') ?? true);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The semantic heading level used for the radio group. Returns undefined if heading level is not set.
|
|
43
|
+
*/
|
|
44
|
+
async getHeadingLevel() {
|
|
45
|
+
const h3 = await this.#getLegendH3();
|
|
46
|
+
const h4 = await this.#getLegendH4();
|
|
47
|
+
const h5 = await this.#getLegendH5();
|
|
48
|
+
if (h3) {
|
|
49
|
+
return 3;
|
|
50
|
+
}
|
|
51
|
+
else if (h4) {
|
|
52
|
+
return 4;
|
|
53
|
+
}
|
|
54
|
+
else if (h5) {
|
|
55
|
+
return 5;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The heading style used for the radio group.
|
|
63
|
+
*/
|
|
64
|
+
async getHeadingStyle() {
|
|
65
|
+
const headingOrLabel = (await this.#getLegendH3()) ||
|
|
66
|
+
(await this.#getLegendH4()) ||
|
|
67
|
+
(await this.#getLegendH5()) ||
|
|
68
|
+
(await this.#getLegendDefault());
|
|
69
|
+
const isHeadingStyle3 = await headingOrLabel?.hasClass('sky-font-heading-3');
|
|
70
|
+
const isHeadingStyle4 = await headingOrLabel?.hasClass('sky-font-heading-4');
|
|
71
|
+
if (isHeadingStyle3) {
|
|
72
|
+
return 3;
|
|
73
|
+
}
|
|
74
|
+
else if (isHeadingStyle4) {
|
|
75
|
+
return 4;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return 5;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets the radio group's heading text. If `headingHidden` is true,
|
|
83
|
+
* the text will still be returned.
|
|
84
|
+
*/
|
|
85
|
+
async getHeadingText() {
|
|
86
|
+
return await ((await this.#getLegendHeading())?.text() ?? '');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Gets the help popover content.
|
|
90
|
+
*/
|
|
91
|
+
async getHelpPopoverContent() {
|
|
92
|
+
const content = await (await this.#getHelpInline()).getPopoverContent();
|
|
93
|
+
/* istanbul ignore if */
|
|
94
|
+
if (typeof content === 'object') {
|
|
95
|
+
throw Error('Unexpected template ref');
|
|
96
|
+
}
|
|
97
|
+
return content;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets the help popover title.
|
|
101
|
+
*/
|
|
102
|
+
async getHelpPopoverTitle() {
|
|
103
|
+
return await (await this.#getHelpInline()).getPopoverTitle();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Gets the radio group's hint text.
|
|
107
|
+
*/
|
|
108
|
+
async getHintText() {
|
|
109
|
+
const hintText = await this.#getHintText();
|
|
110
|
+
return (await hintText?.text())?.trim() ?? '';
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Gets an array of harnesses for the radio buttons in the radio group.
|
|
114
|
+
*/
|
|
115
|
+
async getRadioButtons() {
|
|
116
|
+
return await this.#getRadioButtons();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Whether the radio group is required.
|
|
120
|
+
*/
|
|
121
|
+
async getRequired() {
|
|
122
|
+
const headingWrapper = await this.#getHeading();
|
|
123
|
+
return await headingWrapper.hasClass('sky-control-label-required');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Whether the radio group is stacked.
|
|
127
|
+
*/
|
|
128
|
+
async getStacked() {
|
|
129
|
+
const host = await this.host();
|
|
130
|
+
const heading = (await this.#getLegendH3()) ||
|
|
131
|
+
(await this.#getLegendH4()) ||
|
|
132
|
+
(await this.#getLegendH5());
|
|
133
|
+
const label = await this.#getLegendDefault();
|
|
134
|
+
return (((await host.hasClass('sky-form-field-stacked')) && !!label) ||
|
|
135
|
+
((await host.hasClass('sky-field-group-stacked')) && !!heading));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Whether the radio group has errors.
|
|
139
|
+
*/
|
|
140
|
+
async hasError(errorName) {
|
|
141
|
+
return await (await this.#getFormErrors()).hasError(errorName);
|
|
142
|
+
}
|
|
143
|
+
async #getFormErrors() {
|
|
144
|
+
return await this.locatorFor(SkyFormErrorsHarness)();
|
|
145
|
+
}
|
|
146
|
+
async #getHelpInline() {
|
|
147
|
+
const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({
|
|
148
|
+
ancestor: '.sky-radio-group > .sky-radio-group-legend',
|
|
149
|
+
}))();
|
|
150
|
+
if (harness) {
|
|
151
|
+
return harness;
|
|
152
|
+
}
|
|
153
|
+
throw Error('No help inline found.');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQUMzRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsaUJBQWlCLENBQUM7SUFFL0MsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM5RCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN4RSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDckUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUN6QyxzQ0FBc0MsQ0FDdkMsQ0FBQztJQUNGLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDekMsK0NBQStDLENBQ2hELENBQUM7SUFD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QUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFpQjtRQUNyQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0Msb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSw0Q0FBNEM7U0FDdkQsQ0FBQyxDQUNILEVBQUUsQ0FBQztRQUVKLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7XG4gIFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwsXG4gIFNreVJhZGlvR3JvdXBIZWFkaW5nU3R5bGUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0hhcm5lc3MgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lSYWRpb0dyb3VwSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lSYWRpb0hhcm5lc3MgfSBmcm9tICcuL3JhZGlvLWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSByYWRpbyBncm91cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0dyb3VwSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktcmFkaW8tZ3JvdXAnO1xuXG4gICNnZXRIZWFkaW5nID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LXJhZGlvLWdyb3VwLWxlZ2VuZCBzcGFuJyk7XG4gICNnZXRIZWFkaW5nV3JhcHBlciA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LXJhZGlvLWdyb3VwLWxlZ2VuZCcpO1xuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1yYWRpby1ncm91cC1oaW50LXRleHQnKTtcbiAgI2dldExlZ2VuZERlZmF1bHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIC5za3ktcmFkaW8tZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcbiAgI2dldExlZ2VuZEgzID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ2xlZ2VuZCBoMycpO1xuICAjZ2V0TGVnZW5kSDQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGg0Jyk7XG4gICNnZXRMZWdlbmRINSA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdsZWdlbmQgaDUnKTtcbiAgI2dldExlZ2VuZEhlYWRpbmcgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIGgzLGg0LGg1LC5za3ktcmFkaW8tZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcbiAgI2dldFJhZGlvQnV0dG9ucyA9IHRoaXMubG9jYXRvckZvckFsbChTa3lSYWRpb0hhcm5lc3MpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lSYWRpb0dyb3VwSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreVJhZGlvR3JvdXBIYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lSYWRpb0dyb3VwSGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lSYWRpb0dyb3VwSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaGVhZGluZyBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ0hpZGRlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKChcbiAgICAgIGF3YWl0IHRoaXMuI2dldEhlYWRpbmdXcmFwcGVyKClcbiAgICApPy5oYXNDbGFzcygnc2t5LXNjcmVlbi1yZWFkZXItb25seScpID8/IHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyBoZWFkaW5nIGxldmVsIHVzZWQgZm9yIHRoZSByYWRpbyBncm91cC4gUmV0dXJucyB1bmRlZmluZWQgaWYgaGVhZGluZyBsZXZlbCBpcyBub3Qgc2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlYWRpbmdMZXZlbCgpOiBQcm9taXNlPFxuICAgIFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfCB1bmRlZmluZWRcbiAgPiB7XG4gICAgY29uc3QgaDMgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpO1xuICAgIGNvbnN0IGg0ID0gYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDQoKTtcbiAgICBjb25zdCBoNSA9IGF3YWl0IHRoaXMuI2dldExlZ2VuZEg1KCk7XG5cbiAgICBpZiAoaDMpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSBpZiAoaDQpIHtcbiAgICAgIHJldHVybiA0O1xuICAgIH0gZWxzZSBpZiAoaDUpIHtcbiAgICAgIHJldHVybiA1O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyBzdHlsZSB1c2VkIGZvciB0aGUgcmFkaW8gZ3JvdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ1N0eWxlKCk6IFByb21pc2U8U2t5UmFkaW9Hcm91cEhlYWRpbmdTdHlsZT4ge1xuICAgIGNvbnN0IGhlYWRpbmdPckxhYmVsID1cbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpKSB8fFxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEg0KCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDUoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmREZWZhdWx0KCkpO1xuXG4gICAgY29uc3QgaXNIZWFkaW5nU3R5bGUzID1cbiAgICAgIGF3YWl0IGhlYWRpbmdPckxhYmVsPy5oYXNDbGFzcygnc2t5LWZvbnQtaGVhZGluZy0zJyk7XG4gICAgY29uc3QgaXNIZWFkaW5nU3R5bGU0ID1cbiAgICAgIGF3YWl0IGhlYWRpbmdPckxhYmVsPy5oYXNDbGFzcygnc2t5LWZvbnQtaGVhZGluZy00Jyk7XG5cbiAgICBpZiAoaXNIZWFkaW5nU3R5bGUzKSB7XG4gICAgICByZXR1cm4gMztcbiAgICB9IGVsc2UgaWYgKGlzSGVhZGluZ1N0eWxlNCkge1xuICAgICAgcmV0dXJuIDQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA1O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByYWRpbyBncm91cCdzIGhlYWRpbmcgdGV4dC4gSWYgYGhlYWRpbmdIaWRkZW5gIGlzIHRydWUsXG4gICAqIHRoZSB0ZXh0IHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ1RleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKChhd2FpdCB0aGlzLiNnZXRMZWdlbmRIZWFkaW5nKCkpPy50ZXh0KCkgPz8gJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgRXJyb3IoJ1VuZXhwZWN0ZWQgdGVtcGxhdGUgcmVmJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyVGl0bGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlclRpdGxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmFkaW8gZ3JvdXAncyBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBoaW50VGV4dCA9IGF3YWl0IHRoaXMuI2dldEhpbnRUZXh0KCk7XG5cbiAgICByZXR1cm4gKGF3YWl0IGhpbnRUZXh0Py50ZXh0KCkpPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBhcnJheSBvZiBoYXJuZXNzZXMgZm9yIHRoZSByYWRpbyBidXR0b25zIGluIHRoZSByYWRpbyBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRSYWRpb0J1dHRvbnMoKTogUHJvbWlzZTxTa3lSYWRpb0hhcm5lc3NbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNnZXRSYWRpb0J1dHRvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBncm91cCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRSZXF1aXJlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBoZWFkaW5nV3JhcHBlciA9IGF3YWl0IHRoaXMuI2dldEhlYWRpbmcoKTtcblxuICAgIHJldHVybiBhd2FpdCBoZWFkaW5nV3JhcHBlci5oYXNDbGFzcygnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBncm91cCBpcyBzdGFja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuICAgIGNvbnN0IGhlYWRpbmcgPVxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEgzKCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDQoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRINSgpKTtcbiAgICBjb25zdCBsYWJlbCA9IGF3YWl0IHRoaXMuI2dldExlZ2VuZERlZmF1bHQoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAoKGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1mb3JtLWZpZWxkLXN0YWNrZWQnKSkgJiYgISFsYWJlbCkgfHxcbiAgICAgICgoYXdhaXQgaG9zdC5oYXNDbGFzcygnc2t5LWZpZWxkLWdyb3VwLXN0YWNrZWQnKSkgJiYgISFoZWFkaW5nKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaGFzIGVycm9ycy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFcnJvcihlcnJvck5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgYXN5bmMgI2dldEZvcm1FcnJvcnMoKTogUHJvbWlzZTxTa3lGb3JtRXJyb3JzSGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoU2t5Rm9ybUVycm9yc0hhcm5lc3MpKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0SGVscElubGluZSgpOiBQcm9taXNlPFNreUhlbHBJbmxpbmVIYXJuZXNzPiB7XG4gICAgY29uc3QgaGFybmVzcyA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICAgU2t5SGVscElubGluZUhhcm5lc3Mud2l0aCh7XG4gICAgICAgIGFuY2VzdG9yOiAnLnNreS1yYWRpby1ncm91cCA+IC5za3ktcmFkaW8tZ3JvdXAtbGVnZW5kJyxcbiAgICAgIH0pLFxuICAgICkoKTtcblxuICAgIGlmIChoYXJuZXNzKSB7XG4gICAgICByZXR1cm4gaGFybmVzcztcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taGFybmVzcy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvcmFkaW8vcmFkaW8taGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lIYXJuZXNzRmlsdGVycyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBgU2t5UmFkaW9IYXJuZXNzYCBpbnN0YW5jZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UsIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBTa3lSYWRpb0hhcm5lc3NGaWx0ZXJzIGV4dGVuZHMgU2t5SGFybmVzc0ZpbHRlcnMge31cbiJdfQ==
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
import { SkyHelpInlineHarness } from '@skyux/help-inline/testing';
|
|
3
|
+
import { SkyRadioLabelHarness } from './radio-label-harness';
|
|
4
|
+
/**
|
|
5
|
+
* Harness for interacting with a radio button component in tests.
|
|
6
|
+
*/
|
|
7
|
+
export class SkyRadioHarness extends SkyComponentHarness {
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
static { this.hostSelector = 'sky-radio'; }
|
|
12
|
+
#getHintText = this.locatorForOptional('.sky-radio-hint-text');
|
|
13
|
+
#getInput = this.locatorFor('input.sky-radio-input');
|
|
14
|
+
#getLabel = this.locatorForOptional(SkyRadioLabelHarness);
|
|
15
|
+
#getLabelText = this.locatorForOptional('span.sky-switch-label.sky-radio-label-text');
|
|
16
|
+
/**
|
|
17
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
18
|
+
* `SkyRadioHarness` that meets certain criteria.
|
|
19
|
+
*/
|
|
20
|
+
static with(filters) {
|
|
21
|
+
return SkyRadioHarness.getDataSkyIdPredicate(filters);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Blurs the radio button.
|
|
25
|
+
*/
|
|
26
|
+
async blur() {
|
|
27
|
+
await (await this.#getInput()).blur();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Puts the radio button in a checked state if it is currently unchecked.
|
|
31
|
+
*/
|
|
32
|
+
async check() {
|
|
33
|
+
if (await this.isDisabled()) {
|
|
34
|
+
throw new Error('Could not check the radio button because it is disabled.');
|
|
35
|
+
}
|
|
36
|
+
else if (!(await this.isChecked())) {
|
|
37
|
+
await (await this.#getInput()).click();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Clicks the help inline button.
|
|
42
|
+
*/
|
|
43
|
+
async clickHelpInline() {
|
|
44
|
+
await (await this.#getHelpInline()).click();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Focuses the radio button.
|
|
48
|
+
*/
|
|
49
|
+
async focus() {
|
|
50
|
+
await (await this.#getInput()).focus();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Gets the radio button's aria-label.
|
|
54
|
+
*/
|
|
55
|
+
async getAriaLabel() {
|
|
56
|
+
return await (await this.#getInput()).getAttribute('aria-label');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the radio button's aria-labelledby.
|
|
60
|
+
*/
|
|
61
|
+
async getAriaLabelledby() {
|
|
62
|
+
return await (await this.#getInput()).getAttribute('aria-labelledby');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Gets the help popover content.
|
|
66
|
+
*/
|
|
67
|
+
async getHelpPopoverContent() {
|
|
68
|
+
const content = await (await this.#getHelpInline()).getPopoverContent();
|
|
69
|
+
/* istanbul ignore if */
|
|
70
|
+
if (typeof content === 'object') {
|
|
71
|
+
throw Error('Unexpected template ref');
|
|
72
|
+
}
|
|
73
|
+
return content;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Gets the help popover title.
|
|
77
|
+
*/
|
|
78
|
+
async getHelpPopoverTitle() {
|
|
79
|
+
return await (await this.#getHelpInline()).getPopoverTitle();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets the radio button's hint text.
|
|
83
|
+
*/
|
|
84
|
+
async getHintText() {
|
|
85
|
+
const hintText = await this.#getHintText();
|
|
86
|
+
return (await hintText?.text())?.trim() ?? '';
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Whether the label is hidden. Only supported when using the `labelText` input to set the label.
|
|
90
|
+
*/
|
|
91
|
+
async getLabelHidden() {
|
|
92
|
+
const labelText = await this.#getLabelText();
|
|
93
|
+
const label = await this.#getLabel();
|
|
94
|
+
if (label) {
|
|
95
|
+
throw new Error('`labelIsHidden` is only supported when setting the radio label via the `labelText` input.');
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return !!(await labelText?.hasClass('sky-screen-reader-only'));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,
|
|
103
|
+
* the text will still be returned.
|
|
104
|
+
*/
|
|
105
|
+
async getLabelText() {
|
|
106
|
+
const labelText = await this.#getLabelText();
|
|
107
|
+
if (labelText) {
|
|
108
|
+
return await labelText.text();
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return await (await this.#getLabel())?.getText();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Gets the radio button's name.
|
|
116
|
+
*/
|
|
117
|
+
async getName() {
|
|
118
|
+
return await (await this.#getInput()).getAttribute('name');
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether the radio button is checked.
|
|
122
|
+
*/
|
|
123
|
+
async isChecked() {
|
|
124
|
+
return await (await this.#getInput()).getProperty('checked');
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Whether the radio button is disabled.
|
|
128
|
+
*/
|
|
129
|
+
async isDisabled() {
|
|
130
|
+
const disabled = await (await this.#getInput()).getAttribute('disabled');
|
|
131
|
+
return disabled !== null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Whether the radio button is focused.
|
|
135
|
+
*/
|
|
136
|
+
async isFocused() {
|
|
137
|
+
return await (await this.#getInput()).isFocused();
|
|
138
|
+
}
|
|
139
|
+
async #getHelpInline() {
|
|
140
|
+
const harness = await this.locatorForOptional(SkyHelpInlineHarness)();
|
|
141
|
+
if (harness) {
|
|
142
|
+
return harness;
|
|
143
|
+
}
|
|
144
|
+
throw Error('No help inline found.');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL3JhZGlvL3JhZGlvLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxtQkFBbUI7SUFDdEQ7O09BRUc7YUFDVyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztJQUV6QyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFL0QsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRCxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFMUQsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDckMsNENBQTRDLENBQzdDLENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUErQjtRQUUvQixPQUFPLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUs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QUssQ0FBQyxPQUFPO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFVLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RSxPQUFPLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVM7UUFDcEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1FBRXRFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUhlbHBJbmxpbmVIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lSYWRpb0hhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yYWRpby1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5UmFkaW9MYWJlbEhhcm5lc3MgfSBmcm9tICcuL3JhZGlvLWxhYmVsLWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSByYWRpbyBidXR0b24gY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5UmFkaW9IYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1yYWRpbyc7XG5cbiAgI2dldEhpbnRUZXh0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktcmFkaW8taGludC10ZXh0Jyk7XG5cbiAgI2dldElucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dC5za3ktcmFkaW8taW5wdXQnKTtcblxuICAjZ2V0TGFiZWwgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lSYWRpb0xhYmVsSGFybmVzcyk7XG5cbiAgI2dldExhYmVsVGV4dCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICdzcGFuLnNreS1zd2l0Y2gtbGFiZWwuc2t5LXJhZGlvLWxhYmVsLXRleHQnLFxuICApO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lSYWRpb0hhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lSYWRpb0hhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreVJhZGlvSGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lSYWRpb0hhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJsdXJzIHRoZSByYWRpbyBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYmx1cigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuYmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1dHMgdGhlIHJhZGlvIGJ1dHRvbiBpbiBhIGNoZWNrZWQgc3RhdGUgaWYgaXQgaXMgY3VycmVudGx5IHVuY2hlY2tlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYXdhaXQgdGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvdWxkIG5vdCBjaGVjayB0aGUgcmFkaW8gYnV0dG9uIGJlY2F1c2UgaXQgaXMgZGlzYWJsZWQuJyxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghKGF3YWl0IHRoaXMuaXNDaGVja2VkKCkpKSB7XG4gICAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgcmFkaW8gYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZvY3VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGJ1dHRvbidzIGFyaWEtbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXJpYUxhYmVsKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgYXJpYS1sYWJlbGxlZGJ5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFyaWFMYWJlbGxlZGJ5KCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlckNvbnRlbnQoKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmV4cGVjdGVkIHRlbXBsYXRlIHJlZicpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlclRpdGxlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGJ1dHRvbidzIGhpbnQgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIaW50VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGhpbnRUZXh0ID0gYXdhaXQgdGhpcy4jZ2V0SGludFRleHQoKTtcblxuICAgIHJldHVybiAoYXdhaXQgaGludFRleHQ/LnRleHQoKSk/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsYWJlbCBpcyBoaWRkZW4uIE9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgdGhlIGBsYWJlbFRleHRgIGlucHV0IHRvIHNldCB0aGUgbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxIaWRkZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbGFiZWxUZXh0ID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWxUZXh0KCk7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbCgpO1xuXG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdgbGFiZWxJc0hpZGRlbmAgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBzZXR0aW5nIHRoZSByYWRpbyBsYWJlbCB2aWEgdGhlIGBsYWJlbFRleHRgIGlucHV0LicsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gISEoYXdhaXQgbGFiZWxUZXh0Py5oYXNDbGFzcygnc2t5LXNjcmVlbi1yZWFkZXItb25seScpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgbGFiZWwgdGV4dC4gSWYgdGhlIGxhYmVsIGlzIHNldCB2aWEgYGxhYmVsVGV4dGAgYW5kIGBsYWJlbEhpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBsYWJlbFRleHQgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbFRleHQoKTtcblxuICAgIGlmIChsYWJlbFRleHQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBsYWJlbFRleHQudGV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldExhYmVsKCkpPy5nZXRUZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGJ1dHRvbidzIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TmFtZSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldEF0dHJpYnV0ZSgnbmFtZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGJ1dHRvbiBpcyBjaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzQ2hlY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldFByb3BlcnR5PGJvb2xlYW4+KCdjaGVja2VkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgIHJldHVybiBkaXNhYmxlZCAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gaXMgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0ZvY3VzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5pc0ZvY3VzZWQoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5SGVscElubGluZUhhcm5lc3MpKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ05vIGhlbHAgaW5saW5lIGZvdW5kLicpO1xuICB9XG59XG4iXX0=
|