@skyux/forms 11.30.1 → 12.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/documentation.json +1931 -1913
  2. package/fesm2022/skyux-forms.mjs +180 -179
  3. package/fesm2022/skyux-forms.mjs.map +1 -1
  4. package/package.json +15 -19
  5. package/esm2022/index.mjs +0 -44
  6. package/esm2022/lib/modules/character-counter/character-counter-indicator.component.mjs +0 -38
  7. package/esm2022/lib/modules/character-counter/character-counter-screen-reader.pipe.mjs +0 -46
  8. package/esm2022/lib/modules/character-counter/character-counter.directive.mjs +0 -96
  9. package/esm2022/lib/modules/character-counter/character-counter.module.mjs +0 -43
  10. package/esm2022/lib/modules/checkbox/checkbox-change.mjs +0 -2
  11. package/esm2022/lib/modules/checkbox/checkbox-group-heading-level.mjs +0 -2
  12. package/esm2022/lib/modules/checkbox/checkbox-group-heading-style.mjs +0 -2
  13. package/esm2022/lib/modules/checkbox/checkbox-group.component.mjs +0 -156
  14. package/esm2022/lib/modules/checkbox/checkbox-label-text-label.component.mjs +0 -29
  15. package/esm2022/lib/modules/checkbox/checkbox-label.component.mjs +0 -18
  16. package/esm2022/lib/modules/checkbox/checkbox.component.mjs +0 -397
  17. package/esm2022/lib/modules/checkbox/checkbox.module.mjs +0 -75
  18. package/esm2022/lib/modules/field-group/field-group-heading-level.mjs +0 -2
  19. package/esm2022/lib/modules/field-group/field-group-heading-style.mjs +0 -2
  20. package/esm2022/lib/modules/field-group/field-group.component.mjs +0 -75
  21. package/esm2022/lib/modules/field-group/field-group.module.mjs +0 -16
  22. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-change.mjs +0 -2
  23. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-click.mjs +0 -2
  24. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.mjs +0 -22
  25. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-label.component.mjs +0 -31
  26. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.mjs +0 -486
  27. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.module.mjs +0 -24
  28. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.service.mjs +0 -103
  29. package/esm2022/lib/modules/file-attachment/file-attachments.module.mjs +0 -20
  30. package/esm2022/lib/modules/file-attachment/file-drop/file-drop-change.mjs +0 -2
  31. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.component.mjs +0 -338
  32. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.module.mjs +0 -18
  33. package/esm2022/lib/modules/file-attachment/file-drop/file-item.component.mjs +0 -156
  34. package/esm2022/lib/modules/file-attachment/file-drop/file-link.mjs +0 -2
  35. package/esm2022/lib/modules/file-attachment/shared/file-item-error-type.mjs +0 -2
  36. package/esm2022/lib/modules/file-attachment/shared/file-item.mjs +0 -2
  37. package/esm2022/lib/modules/file-attachment/shared/file-item.service.mjs +0 -71
  38. package/esm2022/lib/modules/file-attachment/shared/file-size.pipe.mjs +0 -61
  39. package/esm2022/lib/modules/file-attachment/shared/file-validate-function.mjs +0 -2
  40. package/esm2022/lib/modules/form-error/form-error.component.mjs +0 -56
  41. package/esm2022/lib/modules/form-error/form-error.module.mjs +0 -16
  42. package/esm2022/lib/modules/form-error/form-errors-enabled-token.mjs +0 -6
  43. package/esm2022/lib/modules/form-error/form-errors.component.mjs +0 -50
  44. package/esm2022/lib/modules/form-error/form-errors.module.mjs +0 -20
  45. package/esm2022/lib/modules/input-box/input-box-adapter.service.mjs +0 -63
  46. package/esm2022/lib/modules/input-box/input-box-control.directive.mjs +0 -33
  47. package/esm2022/lib/modules/input-box/input-box-hint-text.pipe.mjs +0 -23
  48. package/esm2022/lib/modules/input-box/input-box-host.service.mjs +0 -72
  49. package/esm2022/lib/modules/input-box/input-box-populate-args.mjs +0 -2
  50. package/esm2022/lib/modules/input-box/input-box.component.mjs +0 -276
  51. package/esm2022/lib/modules/input-box/input-box.module.mjs +0 -58
  52. package/esm2022/lib/modules/radio/radio-group-id.service.mjs +0 -50
  53. package/esm2022/lib/modules/radio/radio-group.component.mjs +0 -390
  54. package/esm2022/lib/modules/radio/radio-label.component.mjs +0 -34
  55. package/esm2022/lib/modules/radio/radio.component.mjs +0 -357
  56. package/esm2022/lib/modules/radio/radio.module.mjs +0 -71
  57. package/esm2022/lib/modules/radio/types/radio-change.mjs +0 -2
  58. package/esm2022/lib/modules/radio/types/radio-group-heading-level.mjs +0 -2
  59. package/esm2022/lib/modules/radio/types/radio-group-heading-style.mjs +0 -2
  60. package/esm2022/lib/modules/radio/types/radio-type.mjs +0 -2
  61. package/esm2022/lib/modules/required-state/required-state.directive.mjs +0 -34
  62. package/esm2022/lib/modules/selection-box/selection-box-adapter.service.mjs +0 -128
  63. package/esm2022/lib/modules/selection-box/selection-box-description.component.mjs +0 -14
  64. package/esm2022/lib/modules/selection-box/selection-box-grid.component.mjs +0 -141
  65. package/esm2022/lib/modules/selection-box/selection-box-header.component.mjs +0 -14
  66. package/esm2022/lib/modules/selection-box/selection-box.component.mjs +0 -132
  67. package/esm2022/lib/modules/selection-box/selection-box.module.mjs +0 -40
  68. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items-type.mjs +0 -2
  69. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items.mjs +0 -2
  70. package/esm2022/lib/modules/shared/sky-forms-resources.module.mjs +0 -142
  71. package/esm2022/lib/modules/toggle-switch/toggle-switch-label.component.mjs +0 -25
  72. package/esm2022/lib/modules/toggle-switch/toggle-switch.component.mjs +0 -202
  73. package/esm2022/lib/modules/toggle-switch/toggle-switch.module.mjs +0 -36
  74. package/esm2022/lib/modules/toggle-switch/types/toggle-switch-change.mjs +0 -2
  75. package/esm2022/skyux-forms.mjs +0 -5
  76. package/esm2022/testing/legacy/checkbox-fixture.mjs +0 -92
  77. package/esm2022/testing/legacy/radio-fixture.mjs +0 -85
  78. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness-filters.mjs +0 -2
  79. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness.mjs +0 -53
  80. package/esm2022/testing/modules/checkbox/checkbox-group-harness-filters.mjs +0 -2
  81. package/esm2022/testing/modules/checkbox/checkbox-group-harness.mjs +0 -158
  82. package/esm2022/testing/modules/checkbox/checkbox-harness-filters.mjs +0 -2
  83. package/esm2022/testing/modules/checkbox/checkbox-harness.mjs +0 -196
  84. package/esm2022/testing/modules/checkbox/checkbox-label-harness.mjs +0 -19
  85. package/esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.mjs +0 -19
  86. package/esm2022/testing/modules/field-group/field-group-harness-filters.mjs +0 -2
  87. package/esm2022/testing/modules/field-group/field-group-harness.mjs +0 -92
  88. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness-filters.mjs +0 -2
  89. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness.mjs +0 -193
  90. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness-filters.mjs +0 -2
  91. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.mjs +0 -39
  92. package/esm2022/testing/modules/file-attachment/shared/provide-file-attachment-testing.mjs +0 -14
  93. package/esm2022/testing/modules/form-error/form-error-harness.filters.mjs +0 -2
  94. package/esm2022/testing/modules/form-error/form-error-harness.mjs +0 -21
  95. package/esm2022/testing/modules/form-error/form-errors-harness.filters.mjs +0 -2
  96. package/esm2022/testing/modules/form-error/form-errors-harness.mjs +0 -34
  97. package/esm2022/testing/modules/input-box/input-box-harness-filters.mjs +0 -2
  98. package/esm2022/testing/modules/input-box/input-box-harness.mjs +0 -188
  99. package/esm2022/testing/modules/radio/radio-group-harness-filters.mjs +0 -2
  100. package/esm2022/testing/modules/radio/radio-group-harness.mjs +0 -156
  101. package/esm2022/testing/modules/radio/radio-harness-filters.mjs +0 -2
  102. package/esm2022/testing/modules/radio/radio-harness.mjs +0 -147
  103. package/esm2022/testing/modules/radio/radio-label-harness.mjs +0 -19
  104. package/esm2022/testing/public-api.mjs +0 -17
  105. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTTVFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFtQjtJQUMvRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcscUJBQXFCLENBQUM7SUFFbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUMvRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFL0M7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBd0M7UUFFeEMsT0FBTyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0VBQXNFLENBQ3ZFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCO1FBQ2pDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyw2QkFBNkI7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUN4QyxtQ0FBbUMsQ0FDcEMsRUFBRSxDQUFDO1lBQ0osT0FBTyxNQUFNLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FDYiw0RUFBNEUsQ0FDN0UsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxxQkFBcUI7UUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV4RSxPQUFPLE9BQTZCLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE9BQU8sQ0FDTCxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUN6RSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ1gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQjtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsT0FBTyxNQUFNLENBQ1gsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQ3ZCLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVM7UUFDcEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFVO1FBQ2hDLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVU7UUFDeEIsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUMxQyw2QkFBNkIsQ0FDOUIsRUFBRSxDQUFDO1FBRUosTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDNUQsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsT0FBTyxNQUFNLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ2hELFlBQVk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFFdEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudERhdGEsIEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0hhcm5lc3MgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQtaGFybmVzcy1maWx0ZXJzJztcblxudHlwZSBUZXN0RGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyICYgeyBba2V5OiBzdHJpbmddOiBFdmVudERhdGEgfTtcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgZmlsZSBhdHRhY2htZW50IGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUZpbGVBdHRhY2htZW50SGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZmlsZS1hdHRhY2htZW50JztcblxuICAjZ2V0QnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdidXR0b24uc2t5LWZpbGUtYXR0YWNobWVudC1idG4nKTtcbiAgI2dldExhYmVsID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNvbnRyb2wtbGFiZWwnKTtcbiAgI2lucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUZpbGVBdHRhY2htZW50SGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgYXR0YWNoIGZpbGUgYnV0dG9uIGlmIGl0IGlzIHZpc2libGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hGaWxlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKTtcbiAgICAgIGlmICgoYXdhaXQgYnV0dG9uLnRleHQoKSkudHJpbSgpID09PSAnUmVwbGFjZSBmaWxlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBjbGljayBBdHRhY2ggZmlsZSBidXR0b24sIHRoZXJlIGlzIGN1cnJlbnRseSBhIGZpbGUgYXR0YWNoZWQuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIHJlcGxhY2UgZmlsZSBidXR0b24gaW4gZGVmYXVsdCB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1JlcGxhY2VGaWxlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKTtcbiAgICAgIGlmICgoYXdhaXQgYnV0dG9uLnRleHQoKSkudHJpbSgpICE9PSAnUmVwbGFjZSBmaWxlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNsaWNrIFJlcGxhY2UgZmlsZSBidXR0b24sIGl0IGlzIG5vdCB2aXNpYmxlLicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGF0dGFjaGVkIGZpbGUgdG8gZG93bmxvYWQgaXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hlZEZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoJ2EnKSgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUuY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdGhlIGF0dGFjaGVkIGZpbGUuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgYXR0YWNoZWQgZmlsZSdzIGRlbGV0ZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hlZEZpbGVEZWxldGVCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlbGV0ZUJ1dHRvbiA9IGF3YWl0IHRoaXMubG9jYXRvckZvcihcbiAgICAgICAgJ2J1dHRvbi5za3ktZmlsZS1hdHRhY2htZW50LWRlbGV0ZScsXG4gICAgICApKCk7XG4gICAgICByZXR1cm4gYXdhaXQgZGVsZXRlQnV0dG9uLmNsaWNrKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXR0YWNoZWQgZmlsZSdzIGRlbGV0ZSBidXR0b24uIENoZWNrIGlmIGEgZmlsZSBpcyBhdHRhY2hlZC5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFjY2VwdGVkIGZpbGUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXB0ZWRUeXBlcygpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2lucHV0KCkpLmdldEF0dHJpYnV0ZSgnYWNjZXB0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBpbmxpbmUgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuXG4gICAgcmV0dXJuIGNvbnRlbnQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgaW5saW5lIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgKGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1maWxlLWF0dGFjaG1lbnQtaGludC10ZXh0JykoKSkudGV4dCgpXG4gICAgKS50cmltKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZmlsZSBhdHRhY2htZW50IGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldExhYmVsVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgKGF3YWl0IHRoaXMuI2dldExhYmVsKCkpLnRleHQoKSkudHJpbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjdXN0b20gZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0N1c3RvbUVycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHdyb25nIGZpbGUgdHlwZSBlcnJvciBoYXMgZmlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRmlsZVR5cGVFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcnMoKSk/Lmhhc0Vycm9yKCdmaWxlVHlwZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG1heCBmaWxlIHNpemUgZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc01heEZpbGVTaXplRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcignbWF4RmlsZVNpemUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtaW4gZmlsZSBzaXplIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNaW5GaWxlU2l6ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKT8uaGFzRXJyb3IoJ21pbkZpbGVTaXplJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVxdWlyZWQgZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1JlcXVpcmVkRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcigncmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZpbGUgYXR0YWNobWVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0Rpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgKGF3YWl0IHRoaXMuI2dldEJ1dHRvbigpKS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlsZSBhdHRhY2htZW50IGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzUmVxdWlyZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldExhYmVsKClcbiAgICApLmhhc0NsYXNzKCdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlsZSBhdHRhY2htZW50IGhhcyBzdGFja2VkIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNTdGFja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmhhc0NsYXNzKCdza3ktZm9ybS1maWVsZC1zdGFja2VkJyk7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBmaWxlLlxuICAgKiBCZSBzdXJlIHRvIGluY2x1ZGUgYHByb3ZpZGVTa3lGaWxlUmVhZGVyVGVzdGluZ2AgYXMgYSBwcm92aWRlciB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbiB0ZXN0cy5cbiAgICogIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICogICBwcm92aWRlcnM6IFtwcm92aWRlU2t5RmlsZVJlYWRlclRlc3RpbmcoKV1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGF0dGFjaEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNkcm9wRmlsZShmaWxlKTtcbiAgfVxuXG4gIGFzeW5jICNkcm9wRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYXR0YWNoTG9jYXRpb24gPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoXG4gICAgICAnLnNreS1maWxlLWF0dGFjaG1lbnQtdXBsb2FkJyxcbiAgICApKCk7XG5cbiAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCkgYXMgVGVzdERhdGFUcmFuc2ZlcjtcbiAgICBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGF0dGFjaExvY2F0aW9uLmRpc3BhdGNoRXZlbnQoJ2Ryb3AnLCB7XG4gICAgICBkYXRhVHJhbnNmZXIsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyAjZ2V0Rm9ybUVycm9ycygpOiBQcm9taXNlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lGb3JtRXJyb3JzSGFybmVzcykoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5SGVscElubGluZUhhcm5lc3MpKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ05vIGhlbHAgaW5saW5lIGZvdW5kLicpO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWRyb3AvZmlsZS1kcm9wLWhhcm5lc3MtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgYFNreUZpbGVEcm9wSGFybmVzc2AgaW5zdGFuY2VzLlxuICogQGludGVybmFsXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5RmlsZURyb3BIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
@@ -1,39 +0,0 @@
1
- import { SkyComponentHarness } from '@skyux/core/testing';
2
- /**
3
- * Harness for interacting with a file drop component in tests.
4
- * @internal
5
- */
6
- export class SkyFileDropHarness extends SkyComponentHarness {
7
- /**
8
- * @internal
9
- */
10
- static { this.hostSelector = 'sky-file-drop'; }
11
- #getDropTarget = this.locatorFor('.sky-file-drop-target');
12
- /**
13
- * Gets a `HarnessPredicate` that can be used to search for a
14
- * `SkyFileDropHarness` that meets certain criteria.
15
- */
16
- static with(filters) {
17
- return SkyFileDropHarness.getDataSkyIdPredicate(filters);
18
- }
19
- /**
20
- * Drops a file onto the component's drop target.
21
- */
22
- async dropFile(file) {
23
- await this.#dropFiles([file]);
24
- }
25
- // Consider making this public when we finalize this harness's public API.
26
- async #dropFiles(files) {
27
- const dropTarget = await this.#getDropTarget();
28
- const fileList = {
29
- item: (index) => files[index],
30
- length: files.length,
31
- };
32
- await dropTarget.dispatchEvent('drop', {
33
- dataTransfer: {
34
- files: fileList,
35
- },
36
- });
37
- }
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtZHJvcC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTFEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBbUI7SUFDekQ7O09BRUc7YUFDVyxpQkFBWSxHQUFHLGVBQWUsQ0FBQztJQUU3QyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRTFEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQWtDO1FBRWxDLE9BQU8sa0JBQWtCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFVO1FBQzlCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQWE7UUFDNUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFL0MsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsQ0FBQyxLQUFhLEVBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3JCLENBQUM7UUFFRixNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ3JDLFlBQVksRUFBRTtnQkFDWixLQUFLLEVBQUUsUUFBZ0M7YUFDeEM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnREYXRhLCBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lGaWxlRHJvcEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9maWxlLWRyb3AtaGFybmVzcy1maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgZmlsZSBkcm9wIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5RmlsZURyb3BIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1maWxlLWRyb3AnO1xuXG4gICNnZXREcm9wVGFyZ2V0ID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWZpbGUtZHJvcC10YXJnZXQnKTtcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5RmlsZURyb3BIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5RmlsZURyb3BIYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lGaWxlRHJvcEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5RmlsZURyb3BIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEcm9wcyBhIGZpbGUgb250byB0aGUgY29tcG9uZW50J3MgZHJvcCB0YXJnZXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZHJvcEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI2Ryb3BGaWxlcyhbZmlsZV0pO1xuICB9XG5cbiAgLy8gQ29uc2lkZXIgbWFraW5nIHRoaXMgcHVibGljIHdoZW4gd2UgZmluYWxpemUgdGhpcyBoYXJuZXNzJ3MgcHVibGljIEFQSS5cbiAgYXN5bmMgI2Ryb3BGaWxlcyhmaWxlczogRmlsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGF3YWl0IHRoaXMuI2dldERyb3BUYXJnZXQoKTtcblxuICAgIGNvbnN0IGZpbGVMaXN0ID0ge1xuICAgICAgaXRlbTogKGluZGV4OiBudW1iZXIpOiBGaWxlID0+IGZpbGVzW2luZGV4XSxcbiAgICAgIGxlbmd0aDogZmlsZXMubGVuZ3RoLFxuICAgIH07XG5cbiAgICBhd2FpdCBkcm9wVGFyZ2V0LmRpc3BhdGNoRXZlbnQoJ2Ryb3AnLCB7XG4gICAgICBkYXRhVHJhbnNmZXI6IHtcbiAgICAgICAgZmlsZXM6IGZpbGVMaXN0IGFzIHVua25vd24gYXMgRXZlbnREYXRhLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19