@skyux/forms 11.39.0 → 12.0.0-alpha.1

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 (113) hide show
  1. package/documentation.json +3994 -4130
  2. package/fesm2022/skyux-forms-testing.mjs +0 -9
  3. package/fesm2022/skyux-forms-testing.mjs.map +1 -1
  4. package/fesm2022/skyux-forms.mjs +181 -186
  5. package/fesm2022/skyux-forms.mjs.map +1 -1
  6. package/lib/modules/form-error/form-error.component.d.ts +0 -1
  7. package/package.json +15 -19
  8. package/testing/modules/form-error/form-error-harness.d.ts +0 -5
  9. package/esm2022/index.mjs +0 -44
  10. package/esm2022/lib/modules/character-counter/character-counter-indicator.component.mjs +0 -38
  11. package/esm2022/lib/modules/character-counter/character-counter-screen-reader.pipe.mjs +0 -46
  12. package/esm2022/lib/modules/character-counter/character-counter.directive.mjs +0 -96
  13. package/esm2022/lib/modules/character-counter/character-counter.module.mjs +0 -43
  14. package/esm2022/lib/modules/checkbox/checkbox-change.mjs +0 -2
  15. package/esm2022/lib/modules/checkbox/checkbox-group-heading-level.mjs +0 -2
  16. package/esm2022/lib/modules/checkbox/checkbox-group-heading-style.mjs +0 -2
  17. package/esm2022/lib/modules/checkbox/checkbox-group.component.mjs +0 -156
  18. package/esm2022/lib/modules/checkbox/checkbox-label-text-label.component.mjs +0 -29
  19. package/esm2022/lib/modules/checkbox/checkbox-label.component.mjs +0 -18
  20. package/esm2022/lib/modules/checkbox/checkbox.component.mjs +0 -397
  21. package/esm2022/lib/modules/checkbox/checkbox.module.mjs +0 -75
  22. package/esm2022/lib/modules/field-group/field-group-heading-level.mjs +0 -2
  23. package/esm2022/lib/modules/field-group/field-group-heading-style.mjs +0 -2
  24. package/esm2022/lib/modules/field-group/field-group.component.mjs +0 -75
  25. package/esm2022/lib/modules/field-group/field-group.module.mjs +0 -16
  26. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-change.mjs +0 -2
  27. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-click.mjs +0 -2
  28. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.mjs +0 -22
  29. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-label.component.mjs +0 -31
  30. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.mjs +0 -494
  31. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.module.mjs +0 -24
  32. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.service.mjs +0 -100
  33. package/esm2022/lib/modules/file-attachment/file-attachments.module.mjs +0 -20
  34. package/esm2022/lib/modules/file-attachment/file-drop/file-drop-change.mjs +0 -2
  35. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.component.mjs +0 -412
  36. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.module.mjs +0 -18
  37. package/esm2022/lib/modules/file-attachment/file-drop/file-item.component.mjs +0 -156
  38. package/esm2022/lib/modules/file-attachment/file-drop/file-link.mjs +0 -2
  39. package/esm2022/lib/modules/file-attachment/shared/file-item-error-type.mjs +0 -2
  40. package/esm2022/lib/modules/file-attachment/shared/file-item.mjs +0 -2
  41. package/esm2022/lib/modules/file-attachment/shared/file-item.service.mjs +0 -71
  42. package/esm2022/lib/modules/file-attachment/shared/file-size.pipe.mjs +0 -61
  43. package/esm2022/lib/modules/file-attachment/shared/file-validate-function.mjs +0 -2
  44. package/esm2022/lib/modules/form-error/form-error.component.mjs +0 -62
  45. package/esm2022/lib/modules/form-error/form-error.module.mjs +0 -16
  46. package/esm2022/lib/modules/form-error/form-errors-enabled-token.mjs +0 -6
  47. package/esm2022/lib/modules/form-error/form-errors.component.mjs +0 -50
  48. package/esm2022/lib/modules/form-error/form-errors.module.mjs +0 -20
  49. package/esm2022/lib/modules/input-box/input-box-adapter.service.mjs +0 -63
  50. package/esm2022/lib/modules/input-box/input-box-control.directive.mjs +0 -33
  51. package/esm2022/lib/modules/input-box/input-box-hint-text.pipe.mjs +0 -23
  52. package/esm2022/lib/modules/input-box/input-box-host.service.mjs +0 -72
  53. package/esm2022/lib/modules/input-box/input-box-populate-args.mjs +0 -2
  54. package/esm2022/lib/modules/input-box/input-box.component.mjs +0 -276
  55. package/esm2022/lib/modules/input-box/input-box.module.mjs +0 -58
  56. package/esm2022/lib/modules/radio/radio-group-id.service.mjs +0 -50
  57. package/esm2022/lib/modules/radio/radio-group.component.mjs +0 -390
  58. package/esm2022/lib/modules/radio/radio-label.component.mjs +0 -34
  59. package/esm2022/lib/modules/radio/radio.component.mjs +0 -357
  60. package/esm2022/lib/modules/radio/radio.module.mjs +0 -71
  61. package/esm2022/lib/modules/radio/types/radio-change.mjs +0 -2
  62. package/esm2022/lib/modules/radio/types/radio-group-heading-level.mjs +0 -2
  63. package/esm2022/lib/modules/radio/types/radio-group-heading-style.mjs +0 -2
  64. package/esm2022/lib/modules/radio/types/radio-type.mjs +0 -2
  65. package/esm2022/lib/modules/required-state/required-state.directive.mjs +0 -34
  66. package/esm2022/lib/modules/selection-box/selection-box-adapter.service.mjs +0 -128
  67. package/esm2022/lib/modules/selection-box/selection-box-description.component.mjs +0 -14
  68. package/esm2022/lib/modules/selection-box/selection-box-grid.component.mjs +0 -141
  69. package/esm2022/lib/modules/selection-box/selection-box-header.component.mjs +0 -14
  70. package/esm2022/lib/modules/selection-box/selection-box.component.mjs +0 -132
  71. package/esm2022/lib/modules/selection-box/selection-box.module.mjs +0 -40
  72. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items-type.mjs +0 -2
  73. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items.mjs +0 -2
  74. package/esm2022/lib/modules/shared/sky-forms-resources.module.mjs +0 -142
  75. package/esm2022/lib/modules/toggle-switch/toggle-switch-label.component.mjs +0 -25
  76. package/esm2022/lib/modules/toggle-switch/toggle-switch.component.mjs +0 -202
  77. package/esm2022/lib/modules/toggle-switch/toggle-switch.module.mjs +0 -36
  78. package/esm2022/lib/modules/toggle-switch/types/toggle-switch-change.mjs +0 -2
  79. package/esm2022/skyux-forms.mjs +0 -5
  80. package/esm2022/testing/legacy/checkbox-fixture.mjs +0 -92
  81. package/esm2022/testing/legacy/radio-fixture.mjs +0 -85
  82. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness-filters.mjs +0 -2
  83. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness.mjs +0 -53
  84. package/esm2022/testing/modules/checkbox/checkbox-group-harness-filters.mjs +0 -2
  85. package/esm2022/testing/modules/checkbox/checkbox-group-harness.mjs +0 -158
  86. package/esm2022/testing/modules/checkbox/checkbox-harness-filters.mjs +0 -2
  87. package/esm2022/testing/modules/checkbox/checkbox-harness.mjs +0 -196
  88. package/esm2022/testing/modules/checkbox/checkbox-label-harness.mjs +0 -19
  89. package/esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.mjs +0 -19
  90. package/esm2022/testing/modules/field-group/field-group-harness-filters.mjs +0 -2
  91. package/esm2022/testing/modules/field-group/field-group-harness.mjs +0 -92
  92. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness-filters.mjs +0 -2
  93. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness.mjs +0 -193
  94. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness-filters.mjs +0 -2
  95. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.mjs +0 -192
  96. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-link-upload-harness.mjs +0 -47
  97. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-link-upload-input-harness.mjs +0 -17
  98. package/esm2022/testing/modules/file-attachment/file-drop/file-item-harness-filters.mjs +0 -2
  99. package/esm2022/testing/modules/file-attachment/file-drop/file-item-harness.mjs +0 -40
  100. package/esm2022/testing/modules/file-attachment/shared/provide-file-attachment-testing.mjs +0 -14
  101. package/esm2022/testing/modules/form-error/form-error-harness.filters.mjs +0 -2
  102. package/esm2022/testing/modules/form-error/form-error-harness.mjs +0 -31
  103. package/esm2022/testing/modules/form-error/form-errors-harness.filters.mjs +0 -2
  104. package/esm2022/testing/modules/form-error/form-errors-harness.mjs +0 -34
  105. package/esm2022/testing/modules/input-box/input-box-harness-filters.mjs +0 -2
  106. package/esm2022/testing/modules/input-box/input-box-harness.mjs +0 -188
  107. package/esm2022/testing/modules/radio/radio-group-harness-filters.mjs +0 -2
  108. package/esm2022/testing/modules/radio/radio-group-harness.mjs +0 -156
  109. package/esm2022/testing/modules/radio/radio-harness-filters.mjs +0 -2
  110. package/esm2022/testing/modules/radio/radio-harness.mjs +0 -147
  111. package/esm2022/testing/modules/radio/radio-label-harness.mjs +0 -19
  112. package/esm2022/testing/public-api.mjs +0 -18
  113. package/esm2022/testing/skyux-forms-testing.mjs +0 -5
@@ -1,196 +0,0 @@
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 { SkyCheckboxLabelHarness } from './checkbox-label-harness';
5
- import { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';
6
- /**
7
- * Harness for interacting with a checkbox component in tests.
8
- */
9
- export class SkyCheckboxHarness extends SkyComponentHarness {
10
- /**
11
- * @internal
12
- */
13
- static { this.hostSelector = 'sky-checkbox'; }
14
- #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');
15
- #getInput = this.locatorFor('input.sky-checkbox-input');
16
- #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);
17
- #getLabelTextLabel = this.locatorForOptional(SkyCheckboxLabelTextLabelHarness);
18
- /**
19
- * Gets a `HarnessPredicate` that can be used to search for a
20
- * `SkyCheckboxHarness` that meets certain criteria.
21
- */
22
- static with(filters) {
23
- return SkyCheckboxHarness.getDataSkyIdPredicate(filters);
24
- }
25
- /**
26
- * Blurs the checkbox.
27
- */
28
- async blur() {
29
- await (await this.#getInput()).blur();
30
- }
31
- /**
32
- * Clicks the help inline button.
33
- */
34
- async clickHelpInline() {
35
- await (await this.#getHelpInline()).click();
36
- }
37
- /**
38
- * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.
39
- */
40
- async check() {
41
- if (!(await this.isChecked())) {
42
- await this.#toggle();
43
- }
44
- }
45
- /**
46
- * Focuses the checkbox.
47
- */
48
- async focus() {
49
- await (await this.#getInput()).focus();
50
- }
51
- /**
52
- * Gets the checkbox's aria-label.
53
- */
54
- async getAriaLabel() {
55
- return await (await this.#getInput()).getAttribute('aria-label');
56
- }
57
- /**
58
- * Gets the checkbox's aria-labelledby.
59
- */
60
- async getAriaLabelledby() {
61
- return await (await this.#getInput()).getAttribute('aria-labelledby');
62
- }
63
- /**
64
- * Gets the help popover content.
65
- */
66
- async getHelpPopoverContent() {
67
- const content = await (await this.#getHelpInline()).getPopoverContent();
68
- return content;
69
- }
70
- /**
71
- * Gets the help popover title.
72
- */
73
- async getHelpPopoverTitle() {
74
- return await (await this.#getHelpInline()).getPopoverTitle();
75
- }
76
- /**
77
- * Gets the checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,
78
- * the text will still be returned.
79
- */
80
- async getLabelText() {
81
- const labelTextLabel = await this.#getLabelTextLabel();
82
- const label = await this.#getLabel();
83
- if (labelTextLabel) {
84
- const text = await labelTextLabel.getText();
85
- const ariaLabel = await this.getAriaLabel();
86
- // if labelText is set, ariaLabel will never return null
87
- return text || ariaLabel;
88
- }
89
- else {
90
- return await label?.getText();
91
- }
92
- }
93
- /**
94
- * Whether the label is hidden. Only supported when using the `labelText` input to set the label.
95
- */
96
- async getLabelHidden() {
97
- const labelTextLabel = await this.#getLabelTextLabel();
98
- const label = await this.#getLabel();
99
- if (label) {
100
- throw new Error('`labelIsHidden` is only supported when setting the checkbox label via the `labelText` input.');
101
- }
102
- else {
103
- return !(await labelTextLabel?.getText());
104
- }
105
- }
106
- /**
107
- * Gets the checkbox's hint text.
108
- */
109
- async getHintText() {
110
- const hintText = await this.#getHintText();
111
- return (await hintText?.text())?.trim() ?? '';
112
- }
113
- /**
114
- * Gets the checkbox's name.
115
- */
116
- async getName() {
117
- return await (await this.#getInput()).getAttribute('name');
118
- }
119
- /**
120
- * Gets the checkbox's value.
121
- */
122
- async getValue() {
123
- return await (await this.#getInput()).getProperty('value');
124
- }
125
- /**
126
- * Whether the checkbox displays custom error.
127
- */
128
- async hasCustomError(errorName) {
129
- return await (await this.#getFormErrors()).hasError(errorName);
130
- }
131
- /**
132
- * Whether the checkbox displays an error that it is required.
133
- */
134
- async hasRequiredError() {
135
- return await (await this.#getFormErrors()).hasError('required');
136
- }
137
- /**
138
- * Whether the checkbox is checked.
139
- */
140
- async isChecked() {
141
- return await (await this.#getInput()).getProperty('checked');
142
- }
143
- /**
144
- * Whether the checkbox is disabled.
145
- */
146
- async isDisabled() {
147
- const disabled = await (await this.#getInput()).getAttribute('disabled');
148
- return disabled !== null;
149
- }
150
- /**
151
- * Whether the checkbox is focused.
152
- */
153
- async isFocused() {
154
- return await (await this.#getInput()).isFocused();
155
- }
156
- /**
157
- * Whether the checkbox is required.
158
- */
159
- async isRequired() {
160
- const value = await (await this.#getInput()).getAttribute('required');
161
- return value !== null;
162
- }
163
- /**
164
- * Whether the checkbox is stacked.
165
- */
166
- async isStacked() {
167
- return await (await this.host()).hasClass('sky-form-field-stacked');
168
- }
169
- /**
170
- * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.
171
- */
172
- async uncheck() {
173
- if (await this.isChecked()) {
174
- await this.#toggle();
175
- }
176
- }
177
- async #getFormErrors() {
178
- return await this.locatorFor(SkyFormErrorsHarness)();
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
- async #toggle() {
188
- if (await this.isDisabled()) {
189
- throw new Error('Could not toggle the checkbox because it is disabled.');
190
- }
191
- else {
192
- await (await this.#getInput()).click();
193
- }
194
- }
195
- }
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdkY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQW1CO0lBQ3pEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxjQUFjLENBQUM7SUFFNUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRWxFLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFeEQsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRTdELGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUMsZ0NBQWdDLENBQ2pDLENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFrQztRQUVsQyxPQUFPLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFD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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUhlbHBJbmxpbmVIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzcyB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreUNoZWNrYm94SGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2NoZWNrYm94LWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lDaGVja2JveExhYmVsSGFybmVzcyB9IGZyb20gJy4vY2hlY2tib3gtbGFiZWwtaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lDaGVja2JveExhYmVsVGV4dExhYmVsSGFybmVzcyB9IGZyb20gJy4vY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5oYXJuZXNzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgY2hlY2tib3ggY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5Q2hlY2tib3hIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1jaGVja2JveCc7XG5cbiAgI2dldEhpbnRUZXh0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktY2hlY2tib3gtaGludC10ZXh0Jyk7XG5cbiAgI2dldElucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dC5za3ktY2hlY2tib3gtaW5wdXQnKTtcblxuICAjZ2V0TGFiZWwgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lDaGVja2JveExhYmVsSGFybmVzcyk7XG5cbiAgI2dldExhYmVsVGV4dExhYmVsID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgU2t5Q2hlY2tib3hMYWJlbFRleHRMYWJlbEhhcm5lc3MsXG4gICk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUNoZWNrYm94SGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUNoZWNrYm94SGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5Q2hlY2tib3hIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUNoZWNrYm94SGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQmx1cnMgdGhlIGNoZWNrYm94LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJsdXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmJsdXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGhlbHAgaW5saW5lIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0hlbHBJbmxpbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXRzIHRoZSBjaGVja2JveCBpbiBhIGNoZWNrZWQgc3RhdGUgYnkgdG9nZ2xpbmcgaXQgaWYgaXQgaXMgY3VycmVudGx5IHVuY2hlY2tlZCwgb3IgZG9pbmcgbm90aGluZyBpZiBpdCBpcyBhbHJlYWR5IGNoZWNrZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5pc0NoZWNrZWQoKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuI3RvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBjaGVja2JveC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBmb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjaGVja2JveCdzIGFyaWEtbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXJpYUxhYmVsKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hlY2tib3gncyBhcmlhLWxhYmVsbGVkYnkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXJpYUxhYmVsbGVkYnkoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuXG4gICAgcmV0dXJuIGNvbnRlbnQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlclRpdGxlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNoZWNrYm94J3MgbGFiZWwgdGV4dC4gSWYgdGhlIGxhYmVsIGlzIHNldCB2aWEgYGxhYmVsVGV4dGAgYW5kIGBsYWJlbEhpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBsYWJlbFRleHRMYWJlbCA9IGF3YWl0IHRoaXMuI2dldExhYmVsVGV4dExhYmVsKCk7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbCgpO1xuXG4gICAgaWYgKGxhYmVsVGV4dExhYmVsKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgbGFiZWxUZXh0TGFiZWwuZ2V0VGV4dCgpO1xuICAgICAgY29uc3QgYXJpYUxhYmVsID0gYXdhaXQgdGhpcy5nZXRBcmlhTGFiZWwoKTtcblxuICAgICAgLy8gaWYgbGFiZWxUZXh0IGlzIHNldCwgYXJpYUxhYmVsIHdpbGwgbmV2ZXIgcmV0dXJuIG51bGxcbiAgICAgIHJldHVybiB0ZXh0IHx8IGFyaWFMYWJlbCE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhd2FpdCBsYWJlbD8uZ2V0VGV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsYWJlbCBpcyBoaWRkZW4uIE9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgdGhlIGBsYWJlbFRleHRgIGlucHV0IHRvIHNldCB0aGUgbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxIaWRkZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbGFiZWxUZXh0TGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbFRleHRMYWJlbCgpO1xuICAgIGNvbnN0IGxhYmVsID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWwoKTtcblxuICAgIGlmIChsYWJlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnYGxhYmVsSXNIaWRkZW5gIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gc2V0dGluZyB0aGUgY2hlY2tib3ggbGFiZWwgdmlhIHRoZSBgbGFiZWxUZXh0YCBpbnB1dC4nLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICEoYXdhaXQgbGFiZWxUZXh0TGFiZWw/LmdldFRleHQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNoZWNrYm94J3MgaGludCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhpbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaGludFRleHQgPSBhd2FpdCB0aGlzLiNnZXRIaW50VGV4dCgpO1xuXG4gICAgcmV0dXJuIChhd2FpdCBoaW50VGV4dD8udGV4dCgpKT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNoZWNrYm94J3MgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXROYW1lKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCduYW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hlY2tib3gncyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldFByb3BlcnR5PHN0cmluZyB8IG51bGw+KCd2YWx1ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGRpc3BsYXlzIGN1c3RvbSBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNDdXN0b21FcnJvcihlcnJvck5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGRpc3BsYXlzIGFuIGVycm9yIHRoYXQgaXQgaXMgcmVxdWlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcnMoKSkuaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0NoZWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRQcm9wZXJ0eTxib29sZWFuPignY2hlY2tlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgIHJldHVybiBkaXNhYmxlZCAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBmb2N1c2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmlzRm9jdXNlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzUmVxdWlyZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdmFsdWUgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpO1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBzdGFja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzU3RhY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5oYXNDbGFzcygnc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1dHMgdGhlIGNoZWNrYm94IGluIGFuIHVuY2hlY2tlZCBzdGF0ZSBieSB0b2dnbGluZyBpdCBpZiBpdCBpcyBjdXJyZW50bHkgY2hlY2tlZCwgb3IgZG9pbmcgbm90aGluZyBpZiBpdCBpcyBhbHJlYWR5IHVuY2hlY2tlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1bmNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzQ2hlY2tlZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLiN0b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyAjZ2V0Rm9ybUVycm9ycygpOiBQcm9taXNlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lGb3JtRXJyb3JzSGFybmVzcykoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5SGVscElubGluZUhhcm5lc3MpKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ05vIGhlbHAgaW5saW5lIGZvdW5kLicpO1xuICB9XG5cbiAgYXN5bmMgI3RvZ2dsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYXdhaXQgdGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHRvZ2dsZSB0aGUgY2hlY2tib3ggYmVjYXVzZSBpdCBpcyBkaXNhYmxlZC4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmNsaWNrKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { ComponentHarness } from '@angular/cdk/testing';
2
- /**
3
- * Harness for interacting with a checkbox label component in tests.
4
- * @internal
5
- */
6
- export class SkyCheckboxLabelHarness extends ComponentHarness {
7
- /**
8
- * @internal
9
- */
10
- static { this.hostSelector = 'sky-checkbox-label'; }
11
- #getLabelContent = this.locatorFor('.sky-switch-label');
12
- /**
13
- * Gets the text content of the checkbox label.
14
- */
15
- async getText() {
16
- return await (await this.#getLabelContent()).text();
17
- }
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWxhYmVsLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjtJQUMzRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFFbEQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXhEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBjaGVja2JveCBsYWJlbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94TGFiZWxIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1jaGVja2JveC1sYWJlbCc7XG5cbiAgI2dldExhYmVsQ29udGVudCA9IHRoaXMubG9jYXRvckZvcignLnNreS1zd2l0Y2gtbGFiZWwnKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBjaGVja2JveCBsYWJlbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMYWJlbENvbnRlbnQoKSkudGV4dCgpO1xuICB9XG59XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { ComponentHarness } from '@angular/cdk/testing';
2
- /**
3
- * Harness for interacting with a `labelText` checkbox label component in tests.
4
- * @internal
5
- */
6
- export class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {
7
- /**
8
- * @internal
9
- */
10
- static { this.hostSelector = 'sky-checkbox-label-text-label'; }
11
- #getLabelContent = this.locatorForOptional('.sky-switch-label');
12
- /**
13
- * Gets the text content of the `labelText` checkbox label.
14
- */
15
- async getText() {
16
- return await (await this.#getLabelContent())?.text();
17
- }
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvY2hlY2tib3gvY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxnQkFBZ0I7SUFDcEU7O09BRUc7YUFDVyxpQkFBWSxHQUFHLCtCQUErQixDQUFDO0lBRTdELGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRWhFOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBgbGFiZWxUZXh0YCBjaGVja2JveCBsYWJlbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94TGFiZWxUZXh0TGFiZWxIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1jaGVja2JveC1sYWJlbC10ZXh0LWxhYmVsJztcblxuICAjZ2V0TGFiZWxDb250ZW50ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktc3dpdGNoLWxhYmVsJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgYGxhYmVsVGV4dGAgY2hlY2tib3ggbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGFiZWxDb250ZW50KCkpPy50ZXh0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAtaGFybmVzcy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZmllbGQtZ3JvdXAvZmllbGQtZ3JvdXAtaGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lIYXJuZXNzRmlsdGVycyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBgU2t5RmllbGRHcm91cEhhcm5lc3NgIGluc3RhbmNlcy5cbiAqIEBpbnRlcm5hbFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIFNreUZpZWxkR3JvdXBIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
@@ -1,92 +0,0 @@
1
- import { SkyComponentHarness } from '@skyux/core/testing';
2
- import { SkyHelpInlineHarness } from '@skyux/help-inline/testing';
3
- /**
4
- * Harness for interacting with a field group component in tests.
5
- */
6
- export class SkyFieldGroupHarness extends SkyComponentHarness {
7
- /**
8
- * @internal
9
- */
10
- static { this.hostSelector = 'sky-field-group'; }
11
- #getLegend = this.locatorFor('legend');
12
- #getLegendH3 = this.locatorForOptional('legend h3');
13
- #getLegendH4 = this.locatorForOptional('legend h4');
14
- #getLegendHeading = this.locatorFor('legend h3,h4');
15
- #getHintText = this.locatorForOptional('.sky-field-group-hint-text');
16
- /**
17
- * Gets a `HarnessPredicate` that can be used to search for a
18
- * `SkyFieldGroupHarness` that meets certain criteria.
19
- */
20
- static with(filters) {
21
- return SkyFieldGroupHarness.getDataSkyIdPredicate(filters);
22
- }
23
- /**
24
- * Gets the field group's heading text. If `headingHidden` is true,
25
- * the text will still be returned.
26
- */
27
- async getHeadingText() {
28
- return await (await this.#getLegendHeading()).text();
29
- }
30
- /**
31
- * Gets the field group's hint text.
32
- */
33
- async getHintText() {
34
- const hintText = await this.#getHintText();
35
- return (await hintText?.text())?.trim() ?? '';
36
- }
37
- /**
38
- * Whether the heading is hidden.
39
- */
40
- async getHeadingHidden() {
41
- return await (await this.#getLegend()).hasClass('sky-screen-reader-only');
42
- }
43
- /**
44
- * Whether the field group is stacked.
45
- */
46
- async getStacked() {
47
- const host = await this.host();
48
- return await host.hasClass('sky-margin-stacked-xl');
49
- }
50
- /**
51
- * The semantic heading level used for the field group.
52
- */
53
- async getHeadingLevel() {
54
- const h3 = await this.#getLegendH3();
55
- return h3 ? 3 : 4;
56
- }
57
- /**
58
- * The heading style used for the field group.
59
- */
60
- async getHeadingStyle() {
61
- const heading = (await this.#getLegendH3()) || (await this.#getLegendH4());
62
- return (await heading?.hasClass('sky-font-heading-3')) ? 3 : 4;
63
- }
64
- /**
65
- * Clicks the help inline button.
66
- */
67
- async clickHelpInline() {
68
- await (await this.#getHelpInline()).click();
69
- }
70
- /**
71
- * Gets the help popover content.
72
- */
73
- async getHelpPopoverContent() {
74
- return await (await this.#getHelpInline()).getPopoverContent();
75
- }
76
- /**
77
- * Gets the help popover title.
78
- */
79
- async getHelpPopoverTitle() {
80
- return await (await this.#getHelpInline()).getPopoverTitle();
81
- }
82
- async #getHelpInline() {
83
- const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({
84
- ancestor: '.sky-field-group > .sky-field-group-legend',
85
- }))();
86
- if (harness) {
87
- return harness;
88
- }
89
- throw Error('No help inline found.');
90
- }
91
- }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2ZpZWxkLWdyb3VwL2ZpZWxkLWdyb3VwLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQzNEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxpQkFBaUIsQ0FBQztJQUUvQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFFckU7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBb0M7UUFFcEMsT0FBTyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0IsT0FBTyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUUzRSxPQUFPLENBQUMsTUFBTSxPQUFPLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQjtRQUdoQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0Msb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSw0Q0FBNEM7U0FDdkQsQ0FBQyxDQUNILEVBQUUsQ0FBQztRQUVKLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQge1xuICBTa3lGaWVsZEdyb3VwSGVhZGluZ0xldmVsLFxuICBTa3lGaWVsZEdyb3VwSGVhZGluZ1N0eWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZpZWxkR3JvdXBIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vZmllbGQtZ3JvdXAtaGFybmVzcy1maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgZmllbGQgZ3JvdXAgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RmllbGRHcm91cEhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LWZpZWxkLWdyb3VwJztcblxuICAjZ2V0TGVnZW5kID0gdGhpcy5sb2NhdG9yRm9yKCdsZWdlbmQnKTtcbiAgI2dldExlZ2VuZEgzID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ2xlZ2VuZCBoMycpO1xuICAjZ2V0TGVnZW5kSDQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGg0Jyk7XG4gICNnZXRMZWdlbmRIZWFkaW5nID0gdGhpcy5sb2NhdG9yRm9yKCdsZWdlbmQgaDMsaDQnKTtcbiAgI2dldEhpbnRUZXh0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktZmllbGQtZ3JvdXAtaGludC10ZXh0Jyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUZpZWxkR3JvdXBIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5RmllbGRHcm91cEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUZpZWxkR3JvdXBIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUZpZWxkR3JvdXBIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWVsZCBncm91cCdzIGhlYWRpbmcgdGV4dC4gSWYgYGhlYWRpbmdIaWRkZW5gIGlzIHRydWUsXG4gICAqIHRoZSB0ZXh0IHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ1RleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEhlYWRpbmcoKSkudGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpZWxkIGdyb3VwJ3MgaGludCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhpbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaGludFRleHQgPSBhd2FpdCB0aGlzLiNnZXRIaW50VGV4dCgpO1xuXG4gICAgcmV0dXJuIChhd2FpdCBoaW50VGV4dD8udGV4dCgpKT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGhlYWRpbmcgaXMgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlYWRpbmdIaWRkZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMZWdlbmQoKSkuaGFzQ2xhc3MoJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBncm91cCBpcyBzdGFja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1tYXJnaW4tc3RhY2tlZC14bCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyBoZWFkaW5nIGxldmVsIHVzZWQgZm9yIHRoZSBmaWVsZCBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nTGV2ZWwoKTogUHJvbWlzZTxTa3lGaWVsZEdyb3VwSGVhZGluZ0xldmVsPiB7XG4gICAgY29uc3QgaDMgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpO1xuXG4gICAgcmV0dXJuIGgzID8gMyA6IDQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgc3R5bGUgdXNlZCBmb3IgdGhlIGZpZWxkIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlYWRpbmdTdHlsZSgpOiBQcm9taXNlPFNreUZpZWxkR3JvdXBIZWFkaW5nU3R5bGU+IHtcbiAgICBjb25zdCBoZWFkaW5nID0gKGF3YWl0IHRoaXMuI2dldExlZ2VuZEgzKCkpIHx8IChhd2FpdCB0aGlzLiNnZXRMZWdlbmRINCgpKTtcblxuICAgIHJldHVybiAoYXdhaXQgaGVhZGluZz8uaGFzQ2xhc3MoJ3NreS1mb250LWhlYWRpbmctMycpKSA/IDMgOiA0O1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPFxuICAgIFRlbXBsYXRlUmVmPHVua25vd24+IHwgc3RyaW5nIHwgdW5kZWZpbmVkXG4gID4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlclRpdGxlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgYXN5bmMgI2dldEhlbHBJbmxpbmUoKTogUHJvbWlzZTxTa3lIZWxwSW5saW5lSGFybmVzcz4ge1xuICAgIGNvbnN0IGhhcm5lc3MgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAgIFNreUhlbHBJbmxpbmVIYXJuZXNzLndpdGgoe1xuICAgICAgICBhbmNlc3RvcjogJy5za3ktZmllbGQtZ3JvdXAgPiAuc2t5LWZpZWxkLWdyb3VwLWxlZ2VuZCcsXG4gICAgICB9KSxcbiAgICApKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuICAgIHRocm93IEVycm9yKCdObyBoZWxwIGlubGluZSBmb3VuZC4nKTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50LWhhcm5lc3MtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgYFNreUZpbGVBdHRhY2htZW50SGFybmVzc2AgaW5zdGFuY2VzLlxuICogQGludGVybmFsXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5RmlsZUF0dGFjaG1lbnRIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
@@ -1,193 +0,0 @@
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
- /**
5
- * Harness for interacting with a file attachment component in tests.
6
- */
7
- export class SkyFileAttachmentHarness extends SkyComponentHarness {
8
- /**
9
- * @internal
10
- */
11
- static { this.hostSelector = 'sky-file-attachment'; }
12
- #getButton = this.locatorFor('button.sky-file-attachment-btn');
13
- #getLabel = this.locatorFor('.sky-control-label');
14
- #input = this.locatorFor('input[type="file"]');
15
- /**
16
- * Gets a `HarnessPredicate` that can be used to search for a
17
- * `SkyFileAttachmentHarness` that meets certain criteria.
18
- */
19
- static with(filters) {
20
- return SkyFileAttachmentHarness.getDataSkyIdPredicate(filters);
21
- }
22
- /**
23
- * Clicks the attach file button if it is visible.
24
- */
25
- async clickAttachFileButton() {
26
- try {
27
- const button = await this.#getButton();
28
- if ((await button.text()).trim() === 'Replace file') {
29
- throw new Error();
30
- }
31
- return await button.click();
32
- }
33
- catch {
34
- throw new Error('Cannot click Attach file button, there is currently a file attached.');
35
- }
36
- }
37
- /**
38
- * Clicks the help inline button.
39
- */
40
- async clickHelpInline() {
41
- return await (await this.#getHelpInline()).click();
42
- }
43
- /**
44
- * Clicks the replace file button in default theme.
45
- */
46
- async clickReplaceFileButton() {
47
- try {
48
- const button = await this.#getButton();
49
- if ((await button.text()).trim() !== 'Replace file') {
50
- throw new Error();
51
- }
52
- return await button.click();
53
- }
54
- catch {
55
- throw new Error('Cannot click Replace file button, it is not visible.');
56
- }
57
- }
58
- /**
59
- * Clicks the attached file to download it.
60
- */
61
- async clickAttachedFile() {
62
- try {
63
- const file = await this.locatorFor('a')();
64
- return await file.click();
65
- }
66
- catch {
67
- throw new Error('Unable to find the attached file.');
68
- }
69
- }
70
- /**
71
- * Clicks the attached file's delete button.
72
- */
73
- async clickAttachedFileDeleteButton() {
74
- try {
75
- const deleteButton = await this.locatorFor('button.sky-file-attachment-delete')();
76
- return await deleteButton.click();
77
- }
78
- catch {
79
- throw new Error("Unable to find attached file's delete button. Check if a file is attached.");
80
- }
81
- }
82
- /**
83
- * Gets the accepted file types.
84
- */
85
- async getAcceptedTypes() {
86
- return await (await this.#input()).getAttribute('accept');
87
- }
88
- /**
89
- * Gets the help inline popover content.
90
- */
91
- async getHelpPopoverContent() {
92
- const content = await (await this.#getHelpInline()).getPopoverContent();
93
- return content;
94
- }
95
- /**
96
- * Gets the help inline popover title.
97
- */
98
- async getHelpPopoverTitle() {
99
- return await (await this.#getHelpInline()).getPopoverTitle();
100
- }
101
- /**
102
- * Gets the hint text.
103
- */
104
- async getHintText() {
105
- return (await (await this.locatorFor('.sky-file-attachment-hint-text')()).text()).trim();
106
- }
107
- /**
108
- * Gets the file attachment label.
109
- */
110
- async getLabelText() {
111
- return (await (await this.#getLabel()).text()).trim();
112
- }
113
- /**
114
- * Whether a custom error has fired.
115
- */
116
- async hasCustomError(errorName) {
117
- return await (await this.#getFormErrors())?.hasError(errorName);
118
- }
119
- /**
120
- * Whether the wrong file type error has fired.
121
- */
122
- async hasFileTypeError() {
123
- return await (await this.#getFormErrors())?.hasError('fileType');
124
- }
125
- /**
126
- * Whether the max file size error has fired.
127
- */
128
- async hasMaxFileSizeError() {
129
- return await (await this.#getFormErrors())?.hasError('maxFileSize');
130
- }
131
- /**
132
- * Whether the min file size error has fired.
133
- */
134
- async hasMinFileSizeError() {
135
- return await (await this.#getFormErrors())?.hasError('minFileSize');
136
- }
137
- /**
138
- * Whether the required error has fired.
139
- */
140
- async hasRequiredError() {
141
- return await (await this.#getFormErrors())?.hasError('required');
142
- }
143
- /**
144
- * Whether file attachment is disabled.
145
- */
146
- async isDisabled() {
147
- return (await (await this.#getButton()).getAttribute('disabled')) !== null;
148
- }
149
- /**
150
- * Whether file attachment is required.
151
- */
152
- async isRequired() {
153
- return await (await this.#getLabel()).hasClass('sky-control-label-required');
154
- }
155
- /**
156
- * Whether file attachment has stacked enabled.
157
- */
158
- async isStacked() {
159
- return await (await this.host()).hasClass('sky-form-field-stacked');
160
- }
161
- /**
162
- * Attaches a file.
163
- * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.
164
- * @example
165
- * ```typescript
166
- * TestBed.configureTestingModule({
167
- * providers: [provideSkyFileReaderTesting()]
168
- * });
169
- * ```
170
- */
171
- async attachFile(file) {
172
- return await this.#dropFile(file);
173
- }
174
- async #dropFile(file) {
175
- const attachLocation = await this.locatorFor('.sky-file-attachment-upload')();
176
- const dataTransfer = new DataTransfer();
177
- dataTransfer.items.add(file);
178
- return await attachLocation.dispatchEvent('drop', {
179
- dataTransfer,
180
- });
181
- }
182
- async #getFormErrors() {
183
- return await this.locatorFor(SkyFormErrorsHarness)();
184
- }
185
- async #getHelpInline() {
186
- const harness = await this.locatorForOptional(SkyHelpInlineHarness)();
187
- if (harness) {
188
- return harness;
189
- }
190
- throw Error('No help inline found.');
191
- }
192
- }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTTVFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFtQjtJQUMvRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcscUJBQXFCLENBQUM7SUFFbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUMvRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFL0M7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBd0M7UUFFeEMsT0FBTyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNw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M0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVM7UUFDcEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFVO1FBQ2hDLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVU7UUFDeEIsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUMxQyw2QkFBNkIsQ0FDOUIsRUFBRSxDQUFDO1FBRUosTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDNUQsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsT0FBTyxNQUFNLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ2hELFlBQVk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFFdEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudERhdGEsIEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0hhcm5lc3MgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQtaGFybmVzcy1maWx0ZXJzJztcblxudHlwZSBUZXN0RGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyICYgeyBba2V5OiBzdHJpbmddOiBFdmVudERhdGEgfTtcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgZmlsZSBhdHRhY2htZW50IGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUZpbGVBdHRhY2htZW50SGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZmlsZS1hdHRhY2htZW50JztcblxuICAjZ2V0QnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdidXR0b24uc2t5LWZpbGUtYXR0YWNobWVudC1idG4nKTtcbiAgI2dldExhYmVsID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNvbnRyb2wtbGFiZWwnKTtcbiAgI2lucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUZpbGVBdHRhY2htZW50SGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgYXR0YWNoIGZpbGUgYnV0dG9uIGlmIGl0IGlzIHZpc2libGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hGaWxlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKTtcbiAgICAgIGlmICgoYXdhaXQgYnV0dG9uLnRleHQoKSkudHJpbSgpID09PSAnUmVwbGFjZSBmaWxlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBjbGljayBBdHRhY2ggZmlsZSBidXR0b24sIHRoZXJlIGlzIGN1cnJlbnRseSBhIGZpbGUgYXR0YWNoZWQuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIHJlcGxhY2UgZmlsZSBidXR0b24gaW4gZGVmYXVsdCB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1JlcGxhY2VGaWxlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKTtcbiAgICAgIGlmICgoYXdhaXQgYnV0dG9uLnRleHQoKSkudHJpbSgpICE9PSAnUmVwbGFjZSBmaWxlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNsaWNrIFJlcGxhY2UgZmlsZSBidXR0b24sIGl0IGlzIG5vdCB2aXNpYmxlLicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGF0dGFjaGVkIGZpbGUgdG8gZG93bmxvYWQgaXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hlZEZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoJ2EnKSgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUuY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdGhlIGF0dGFjaGVkIGZpbGUuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgYXR0YWNoZWQgZmlsZSdzIGRlbGV0ZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hlZEZpbGVEZWxldGVCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlbGV0ZUJ1dHRvbiA9IGF3YWl0IHRoaXMubG9jYXRvckZvcihcbiAgICAgICAgJ2J1dHRvbi5za3ktZmlsZS1hdHRhY2htZW50LWRlbGV0ZScsXG4gICAgICApKCk7XG4gICAgICByZXR1cm4gYXdhaXQgZGVsZXRlQnV0dG9uLmNsaWNrKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXR0YWNoZWQgZmlsZSdzIGRlbGV0ZSBidXR0b24uIENoZWNrIGlmIGEgZmlsZSBpcyBhdHRhY2hlZC5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFjY2VwdGVkIGZpbGUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXB0ZWRUeXBlcygpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2lucHV0KCkpLmdldEF0dHJpYnV0ZSgnYWNjZXB0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBpbmxpbmUgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuXG4gICAgcmV0dXJuIGNvbnRlbnQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgaW5saW5lIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgKGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1maWxlLWF0dGFjaG1lbnQtaGludC10ZXh0JykoKSkudGV4dCgpXG4gICAgKS50cmltKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZmlsZSBhdHRhY2htZW50IGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldExhYmVsVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgKGF3YWl0IHRoaXMuI2dldExhYmVsKCkpLnRleHQoKSkudHJpbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjdXN0b20gZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0N1c3RvbUVycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHdyb25nIGZpbGUgdHlwZSBlcnJvciBoYXMgZmlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRmlsZVR5cGVFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcnMoKSk/Lmhhc0Vycm9yKCdmaWxlVHlwZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG1heCBmaWxlIHNpemUgZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc01heEZpbGVTaXplRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcignbWF4RmlsZVNpemUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtaW4gZmlsZSBzaXplIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNaW5GaWxlU2l6ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKT8uaGFzRXJyb3IoJ21pbkZpbGVTaXplJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVxdWlyZWQgZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1JlcXVpcmVkRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcigncmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZpbGUgYXR0YWNobWVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0Rpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgKGF3YWl0IHRoaXMuI2dldEJ1dHRvbigpKS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlsZSBhdHRhY2htZW50IGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzUmVxdWlyZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldExhYmVsKClcbiAgICApLmhhc0NsYXNzKCdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlsZSBhdHRhY2htZW50IGhhcyBzdGFja2VkIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNTdGFja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmhhc0NsYXNzKCdza3ktZm9ybS1maWVsZC1zdGFja2VkJyk7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBmaWxlLlxuICAgKiBCZSBzdXJlIHRvIGluY2x1ZGUgYHByb3ZpZGVTa3lGaWxlUmVhZGVyVGVzdGluZ2AgYXMgYSBwcm92aWRlciB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbiB0ZXN0cy5cbiAgICogIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICogICBwcm92aWRlcnM6IFtwcm92aWRlU2t5RmlsZVJlYWRlclRlc3RpbmcoKV1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGF0dGFjaEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNkcm9wRmlsZShmaWxlKTtcbiAgfVxuXG4gIGFzeW5jICNkcm9wRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYXR0YWNoTG9jYXRpb24gPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoXG4gICAgICAnLnNreS1maWxlLWF0dGFjaG1lbnQtdXBsb2FkJyxcbiAgICApKCk7XG5cbiAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCkgYXMgVGVzdERhdGFUcmFuc2ZlcjtcbiAgICBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGF0dGFjaExvY2F0aW9uLmRpc3BhdGNoRXZlbnQoJ2Ryb3AnLCB7XG4gICAgICBkYXRhVHJhbnNmZXIsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyAjZ2V0Rm9ybUVycm9ycygpOiBQcm9taXNlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lGb3JtRXJyb3JzSGFybmVzcykoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5SGVscElubGluZUhhcm5lc3MpKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ05vIGhlbHAgaW5saW5lIGZvdW5kLicpO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWRyb3AvZmlsZS1kcm9wLWhhcm5lc3MtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgYFNreUZpbGVEcm9wSGFybmVzc2AgaW5zdGFuY2VzLlxuICogQGludGVybmFsXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5RmlsZURyb3BIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=