@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.
Files changed (88) hide show
  1. package/documentation.json +2925 -1719
  2. package/esm2022/lib/modules/checkbox/checkbox-group.component.mjs +2 -2
  3. package/esm2022/lib/modules/field-group/field-group.component.mjs +2 -2
  4. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.mjs +3 -5
  5. package/esm2022/lib/modules/input-box/input-box.component.mjs +2 -2
  6. package/esm2022/lib/modules/radio/radio-group.component.mjs +2 -2
  7. package/esm2022/lib/modules/radio/radio.component.mjs +2 -2
  8. package/esm2022/lib/modules/toggle-switch/toggle-switch.component.mjs +3 -7
  9. package/esm2022/testing/legacy/checkbox-fixture.mjs +92 -0
  10. package/esm2022/testing/legacy/radio-fixture.mjs +85 -0
  11. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness-filters.mjs +2 -0
  12. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness.mjs +53 -0
  13. package/esm2022/testing/modules/checkbox/checkbox-group-harness-filters.mjs +2 -0
  14. package/esm2022/testing/modules/checkbox/checkbox-group-harness.mjs +158 -0
  15. package/esm2022/testing/modules/checkbox/checkbox-harness-filters.mjs +2 -0
  16. package/esm2022/testing/modules/checkbox/checkbox-harness.mjs +196 -0
  17. package/esm2022/testing/modules/checkbox/checkbox-label-harness.mjs +19 -0
  18. package/esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.mjs +19 -0
  19. package/esm2022/testing/modules/field-group/field-group-harness-filters.mjs +2 -0
  20. package/esm2022/testing/modules/field-group/field-group-harness.mjs +92 -0
  21. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness-filters.mjs +2 -0
  22. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.mjs +45 -0
  23. package/esm2022/testing/modules/form-error/form-error-harness.filters.mjs +2 -0
  24. package/esm2022/testing/modules/form-error/form-error-harness.mjs +21 -0
  25. package/esm2022/testing/modules/form-error/form-errors-harness.filters.mjs +2 -0
  26. package/esm2022/testing/modules/form-error/form-errors-harness.mjs +34 -0
  27. package/esm2022/testing/modules/input-box/input-box-harness-filters.mjs +2 -0
  28. package/esm2022/testing/modules/input-box/input-box-harness.mjs +188 -0
  29. package/esm2022/testing/modules/radio/radio-group-harness-filters.mjs +2 -0
  30. package/esm2022/testing/modules/radio/radio-group-harness.mjs +156 -0
  31. package/esm2022/testing/modules/radio/radio-harness-filters.mjs +2 -0
  32. package/esm2022/testing/modules/radio/radio-harness.mjs +147 -0
  33. package/esm2022/testing/modules/radio/radio-label-harness.mjs +19 -0
  34. package/esm2022/testing/public-api.mjs +15 -14
  35. package/fesm2022/skyux-forms-testing.mjs +144 -54
  36. package/fesm2022/skyux-forms-testing.mjs.map +1 -1
  37. package/fesm2022/skyux-forms.mjs +14 -20
  38. package/fesm2022/skyux-forms.mjs.map +1 -1
  39. package/package.json +9 -9
  40. package/testing/{radio-fixture.d.ts → legacy/radio-fixture.d.ts} +1 -0
  41. package/testing/modules/field-group/field-group-harness-filters.d.ts +7 -0
  42. package/testing/modules/field-group/field-group-harness.d.ts +57 -0
  43. package/testing/public-api.d.ts +24 -22
  44. package/esm2022/testing/character-counter/character-counter-indicator-harness-filters.mjs +0 -2
  45. package/esm2022/testing/character-counter/character-counter-indicator-harness.mjs +0 -53
  46. package/esm2022/testing/checkbox/checkbox-group-harness-filters.mjs +0 -2
  47. package/esm2022/testing/checkbox/checkbox-group-harness.mjs +0 -158
  48. package/esm2022/testing/checkbox/checkbox-harness-filters.mjs +0 -2
  49. package/esm2022/testing/checkbox/checkbox-harness.mjs +0 -196
  50. package/esm2022/testing/checkbox/checkbox-label-harness.mjs +0 -19
  51. package/esm2022/testing/checkbox/checkbox-label-text-label.harness.mjs +0 -19
  52. package/esm2022/testing/checkbox-fixture.mjs +0 -92
  53. package/esm2022/testing/file-drop/file-drop-harness-filters.mjs +0 -2
  54. package/esm2022/testing/file-drop/file-drop-harness.mjs +0 -45
  55. package/esm2022/testing/form-error/form-error-harness.filters.mjs +0 -2
  56. package/esm2022/testing/form-error/form-error-harness.mjs +0 -21
  57. package/esm2022/testing/form-error/form-errors-harness.filters.mjs +0 -2
  58. package/esm2022/testing/form-error/form-errors-harness.mjs +0 -34
  59. package/esm2022/testing/input-box/input-box-harness-filters.mjs +0 -2
  60. package/esm2022/testing/input-box/input-box-harness.mjs +0 -188
  61. package/esm2022/testing/radio/radio-group-harness-filters.mjs +0 -2
  62. package/esm2022/testing/radio/radio-group-harness.mjs +0 -157
  63. package/esm2022/testing/radio/radio-harness-filters.mjs +0 -2
  64. package/esm2022/testing/radio/radio-harness.mjs +0 -147
  65. package/esm2022/testing/radio/radio-label-harness.mjs +0 -19
  66. package/esm2022/testing/radio-fixture.mjs +0 -84
  67. /package/testing/{checkbox-fixture.d.ts → legacy/checkbox-fixture.d.ts} +0 -0
  68. /package/testing/{character-counter → modules/character-counter}/character-counter-indicator-harness-filters.d.ts +0 -0
  69. /package/testing/{character-counter → modules/character-counter}/character-counter-indicator-harness.d.ts +0 -0
  70. /package/testing/{checkbox → modules/checkbox}/checkbox-group-harness-filters.d.ts +0 -0
  71. /package/testing/{checkbox → modules/checkbox}/checkbox-group-harness.d.ts +0 -0
  72. /package/testing/{checkbox → modules/checkbox}/checkbox-harness-filters.d.ts +0 -0
  73. /package/testing/{checkbox → modules/checkbox}/checkbox-harness.d.ts +0 -0
  74. /package/testing/{checkbox → modules/checkbox}/checkbox-label-harness.d.ts +0 -0
  75. /package/testing/{checkbox → modules/checkbox}/checkbox-label-text-label.harness.d.ts +0 -0
  76. /package/testing/{file-drop → modules/file-attachment/file-drop}/file-drop-harness-filters.d.ts +0 -0
  77. /package/testing/{file-drop → modules/file-attachment/file-drop}/file-drop-harness.d.ts +0 -0
  78. /package/testing/{form-error → modules/form-error}/form-error-harness.d.ts +0 -0
  79. /package/testing/{form-error → modules/form-error}/form-error-harness.filters.d.ts +0 -0
  80. /package/testing/{form-error → modules/form-error}/form-errors-harness.d.ts +0 -0
  81. /package/testing/{form-error → modules/form-error}/form-errors-harness.filters.d.ts +0 -0
  82. /package/testing/{input-box → modules/input-box}/input-box-harness-filters.d.ts +0 -0
  83. /package/testing/{input-box → modules/input-box}/input-box-harness.d.ts +0 -0
  84. /package/testing/{radio → modules/radio}/radio-group-harness-filters.d.ts +0 -0
  85. /package/testing/{radio → modules/radio}/radio-group-harness.d.ts +0 -0
  86. /package/testing/{radio → modules/radio}/radio-harness-filters.d.ts +0 -0
  87. /package/testing/{radio → modules/radio}/radio-harness.d.ts +0 -0
  88. /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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9pbnB1dC1ib3gvaW5wdXQtYm94LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDL0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsNEJBQTRCO0lBQ2xFOztPQUVHO2FBQ1csaUJBQVksR0FBRyxlQUFlLENBQUM7SUFFN0MsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ25FLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMxRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBa0M7UUFFbEMsT0FBTyxr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SSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFM0MsT0FBTyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQixPQUFPLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBc0I7UUFDbkQsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFFdEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlLCBUZXN0RWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lRdWVyeWFibGVDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreVN0YXR1c0luZGljYXRvckhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycy90ZXN0aW5nJztcbmltcG9ydCB7IFNreVBvcG92ZXJIYXJuZXNzIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9ySGFybmVzcyB9IGZyb20gJy4uL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLWluZGljYXRvci1oYXJuZXNzJztcbmltcG9ydCB7IFNreUZvcm1FcnJvcnNIYXJuZXNzIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1oYXJuZXNzJztcblxuaW1wb3J0IHsgU2t5SW5wdXRCb3hIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vaW5wdXQtYm94LWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhbiBpbnB1dCBib3ggY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5SW5wdXRCb3hIYXJuZXNzIGV4dGVuZHMgU2t5UXVlcnlhYmxlQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1pbnB1dC1ib3gnO1xuXG4gICNnZXRIaW50VGV4dCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LWlucHV0LWJveC1oaW50LXRleHQnKTtcbiAgI2dldExhYmVsID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktY29udHJvbC1sYWJlbCcpO1xuICAjZ2V0V3JhcHBlciA9IHRoaXMubG9jYXRvckZvcignLnNreS1pbnB1dC1ib3gnKTtcblxuICBhc3luYyAjZ2V0Rm9ybUVycm9yKCk6IFByb21pc2U8U2t5Rm9ybUVycm9yc0hhcm5lc3M+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=