@skyux/lookup 8.7.2 → 9.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 (121) hide show
  1. package/documentation.json +244 -244
  2. package/esm2022/lib/modules/autocomplete/autocomplete-adapter.service.mjs +61 -0
  3. package/esm2022/lib/modules/autocomplete/autocomplete-input.directive.mjs +237 -0
  4. package/{esm2020 → esm2022}/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.mjs +4 -4
  5. package/esm2022/lib/modules/autocomplete/autocomplete.component.mjs +817 -0
  6. package/{esm2020 → esm2022}/lib/modules/autocomplete/autocomplete.module.mjs +27 -27
  7. package/esm2022/lib/modules/country-field/country-field.component.mjs +444 -0
  8. package/{esm2020 → esm2022}/lib/modules/country-field/country-field.module.mjs +19 -19
  9. package/{esm2020 → esm2022}/lib/modules/lookup/lookup-adapter.service.mjs +4 -4
  10. package/esm2022/lib/modules/lookup/lookup-autocomplete-adapter.mjs +114 -0
  11. package/esm2022/lib/modules/lookup/lookup-show-more-modal.component.mjs +270 -0
  12. package/{esm2020 → esm2022}/lib/modules/lookup/lookup.component.mjs +299 -280
  13. package/{esm2020 → esm2022}/lib/modules/lookup/lookup.module.mjs +37 -37
  14. package/esm2022/lib/modules/search/search-adapter.service.mjs +46 -0
  15. package/esm2022/lib/modules/search/search.component.mjs +285 -0
  16. package/{esm2020 → esm2022}/lib/modules/search/search.module.mjs +17 -17
  17. package/{esm2020 → esm2022}/lib/modules/selection-modal/selection-modal-item-selected.pipe.mjs +4 -4
  18. package/esm2022/lib/modules/selection-modal/selection-modal.component.mjs +201 -0
  19. package/{esm2020 → esm2022}/lib/modules/selection-modal/selection-modal.module.mjs +27 -27
  20. package/esm2022/lib/modules/selection-modal/selection-modal.service.mjs +89 -0
  21. package/esm2022/lib/modules/selection-modal/types/selection-modal-instance.mjs +45 -0
  22. package/esm2022/lib/modules/shared/sky-lookup-resources.module.mjs +71 -0
  23. package/esm2022/testing/autocomplete/autocomplete-harness.mjs +155 -0
  24. package/esm2022/testing/autocomplete/autocomplete-input-harness.mjs +63 -0
  25. package/esm2022/testing/autocomplete/autocomplete-search-result-harness.mjs +44 -0
  26. package/esm2022/testing/country-field/country-field-fixture.mjs +118 -0
  27. package/{esm2020 → esm2022}/testing/country-field/country-field-testing.module.mjs +5 -5
  28. package/esm2022/testing/lookup/lookup-harness.mjs +76 -0
  29. package/{esm2020 → esm2022}/testing/search/search-fixture.mjs +18 -19
  30. package/esm2022/testing/search/search-harness.mjs +80 -0
  31. package/{esm2020 → esm2022}/testing/search/search-testing.module.mjs +5 -5
  32. package/esm2022/testing/selection-modal/selection-modal-harness.mjs +122 -0
  33. package/{fesm2020 → fesm2022}/skyux-lookup-testing.mjs +171 -187
  34. package/{fesm2020 → fesm2022}/skyux-lookup-testing.mjs.map +1 -1
  35. package/fesm2022/skyux-lookup.mjs +3707 -0
  36. package/{fesm2015 → fesm2022}/skyux-lookup.mjs.map +1 -1
  37. package/lib/modules/autocomplete/autocomplete-input.directive.d.ts +1 -1
  38. package/lib/modules/autocomplete/autocomplete.component.d.ts +1 -1
  39. package/lib/modules/country-field/country-field.component.d.ts +1 -1
  40. package/lib/modules/lookup/lookup-autocomplete-adapter.d.ts +1 -1
  41. package/lib/modules/lookup/lookup.component.d.ts +1 -1
  42. package/lib/modules/search/search.component.d.ts +1 -1
  43. package/package.json +23 -31
  44. package/esm2020/lib/modules/autocomplete/autocomplete-adapter.service.mjs +0 -64
  45. package/esm2020/lib/modules/autocomplete/autocomplete-input.directive.mjs +0 -235
  46. package/esm2020/lib/modules/autocomplete/autocomplete.component.mjs +0 -775
  47. package/esm2020/lib/modules/country-field/country-field.component.mjs +0 -433
  48. package/esm2020/lib/modules/lookup/lookup-autocomplete-adapter.mjs +0 -115
  49. package/esm2020/lib/modules/lookup/lookup-show-more-modal.component.mjs +0 -271
  50. package/esm2020/lib/modules/search/search-adapter.service.mjs +0 -46
  51. package/esm2020/lib/modules/search/search.component.mjs +0 -279
  52. package/esm2020/lib/modules/selection-modal/selection-modal.component.mjs +0 -199
  53. package/esm2020/lib/modules/selection-modal/selection-modal.service.mjs +0 -92
  54. package/esm2020/lib/modules/selection-modal/types/selection-modal-instance.mjs +0 -48
  55. package/esm2020/lib/modules/shared/sky-lookup-resources.module.mjs +0 -71
  56. package/esm2020/testing/autocomplete/autocomplete-harness.mjs +0 -161
  57. package/esm2020/testing/autocomplete/autocomplete-input-harness.mjs +0 -63
  58. package/esm2020/testing/autocomplete/autocomplete-search-result-harness.mjs +0 -44
  59. package/esm2020/testing/country-field/country-field-fixture.mjs +0 -114
  60. package/esm2020/testing/lookup/lookup-harness.mjs +0 -82
  61. package/esm2020/testing/search/search-harness.mjs +0 -86
  62. package/esm2020/testing/selection-modal/selection-modal-harness.mjs +0 -128
  63. package/fesm2015/skyux-lookup-testing.mjs +0 -980
  64. package/fesm2015/skyux-lookup-testing.mjs.map +0 -1
  65. package/fesm2015/skyux-lookup.mjs +0 -3642
  66. package/fesm2020/skyux-lookup.mjs +0 -3625
  67. package/fesm2020/skyux-lookup.mjs.map +0 -1
  68. /package/{esm2020 → esm2022}/index.mjs +0 -0
  69. /package/{esm2020 → esm2022}/lib/modules/autocomplete/autocomplete-default-search-function.mjs +0 -0
  70. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-default-search-function-options.mjs +0 -0
  71. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-input-text-change.mjs +0 -0
  72. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-message-type.mjs +0 -0
  73. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-message.mjs +0 -0
  74. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-args.mjs +0 -0
  75. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-args.mjs +0 -0
  76. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-function.mjs +0 -0
  77. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-result-display-type.mjs +0 -0
  78. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-result.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-context.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-function-filter.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-function-response.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-function.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-selection-change.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-show-more-args.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/modules/country-field/types/country-field-context-token.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/modules/country-field/types/country-field-context.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/modules/country-field/types/country.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-add-click-callback-args.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-add-click-event-args.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-select-mode-type.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-select-mode.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-config.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-custom-picker-context.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-custom-picker.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-native-picker-config.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-native-picker-context.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-add-click-callback-args.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-add-click-event-args.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-close-args.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-context.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-open-args.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-result.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-search-args.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-search-result.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/modules/shared/sky-lookup-string-utils.mjs +0 -0
  106. /package/{esm2020 → esm2022}/skyux-lookup.mjs +0 -0
  107. /package/{esm2020 → esm2022}/testing/autocomplete/autocomplete-harness-filters.mjs +0 -0
  108. /package/{esm2020 → esm2022}/testing/autocomplete/autocomplete-search-result-harness-filters.mjs +0 -0
  109. /package/{esm2020 → esm2022}/testing/lookup/lookup-harness-filters.mjs +0 -0
  110. /package/{esm2020 → esm2022}/testing/lookup/lookup-selection-harness-filters.mjs +0 -0
  111. /package/{esm2020 → esm2022}/testing/lookup/lookup-selection-harness.mjs +0 -0
  112. /package/{esm2020 → esm2022}/testing/lookup/lookup-selections-list-harness.mjs +0 -0
  113. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-harness-filters.mjs +0 -0
  114. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-harness.mjs +0 -0
  115. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-search-result-harness-filters.mjs +0 -0
  116. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-search-result-harness.mjs +0 -0
  117. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  118. /package/{esm2020 → esm2022}/testing/search/search-harness-filters.mjs +0 -0
  119. /package/{esm2020 → esm2022}/testing/selection-modal/selection-modal-search-result-harness-filters.mjs +0 -0
  120. /package/{esm2020 → esm2022}/testing/selection-modal/selection-modal-search-result-harness.mjs +0 -0
  121. /package/{esm2020 → esm2022}/testing/skyux-lookup-testing.mjs +0 -0
@@ -0,0 +1,155 @@
1
+ import { SkyComponentHarness, SkyOverlayHarness } from '@skyux/core/testing';
2
+ import { SkyAutocompleteInputHarness } from './autocomplete-input-harness';
3
+ import { SkyAutocompleteSearchResultHarness } from './autocomplete-search-result-harness';
4
+ /**
5
+ * Harness for interacting with an autocomplete component in tests.
6
+ * @internal
7
+ */
8
+ export class SkyAutocompleteHarness extends SkyComponentHarness {
9
+ /**
10
+ * @internal
11
+ */
12
+ static { this.hostSelector = 'sky-autocomplete'; }
13
+ #documentRootLocator = this.documentRootLocatorFactory();
14
+ #getInput = this.locatorFor(SkyAutocompleteInputHarness);
15
+ /**
16
+ * Gets a `HarnessPredicate` that can be used to search for a
17
+ * `SkyAutocompleteHarness` that meets certain criteria.
18
+ */
19
+ static with(filters) {
20
+ return SkyAutocompleteHarness.getDataSkyIdPredicate(filters);
21
+ }
22
+ /**
23
+ * Blurs the autocomplete input.
24
+ */
25
+ async blur() {
26
+ return (await this.#getInput()).blur();
27
+ }
28
+ /**
29
+ * Clears the input value.
30
+ */
31
+ async clear() {
32
+ return (await this.#getInput()).clear();
33
+ }
34
+ /**
35
+ * Enters text into the autocomplete input.
36
+ */
37
+ async enterText(value) {
38
+ return (await this.#getInput()).enterText(value);
39
+ }
40
+ /**
41
+ * Focuses the autocomplete input.
42
+ */
43
+ async focus() {
44
+ return (await this.#getInput()).focus();
45
+ }
46
+ /**
47
+ * Returns search result harnesses.
48
+ */
49
+ async getSearchResults(filters) {
50
+ const overlay = await this.#getOverlay();
51
+ if (!overlay) {
52
+ throw new Error('Unable to retrieve search results. The autocomplete is closed.');
53
+ }
54
+ const harnesses = await overlay.queryHarnesses(SkyAutocompleteSearchResultHarness.with(filters || {}));
55
+ if (filters && harnesses.length === 0) {
56
+ // Stringify the regular expression so that it's readable in the console log.
57
+ if (filters.text instanceof RegExp) {
58
+ filters.text = filters.text.toString();
59
+ }
60
+ throw new Error(`Could not find search results matching filter(s): ${JSON.stringify(filters)}`);
61
+ }
62
+ return harnesses;
63
+ }
64
+ /**
65
+ * Returns the text content for each search result.
66
+ */
67
+ async getSearchResultsText(filters) {
68
+ const harnesses = await this.getSearchResults(filters);
69
+ const text = [];
70
+ for (const harness of harnesses) {
71
+ text.push(await harness.getText());
72
+ }
73
+ return text;
74
+ }
75
+ /**
76
+ * Gets the value of the autocomplete input.
77
+ */
78
+ async getValue() {
79
+ return (await this.#getInput()).getValue();
80
+ }
81
+ /**
82
+ * Whether the autocomplete input is disabled.
83
+ */
84
+ async isDisabled() {
85
+ return (await this.#getInput()).isDisabled();
86
+ }
87
+ /**
88
+ * Whether the autocomplete input is focused.
89
+ */
90
+ async isFocused() {
91
+ return (await this.#getInput()).isFocused();
92
+ }
93
+ /**
94
+ * Whether the autocomplete is open.
95
+ */
96
+ async isOpen() {
97
+ const overlay = await this.#getOverlay();
98
+ return !!overlay;
99
+ }
100
+ /**
101
+ * Selects a search result.
102
+ */
103
+ async selectSearchResult(filters) {
104
+ const results = await this.getSearchResults(filters);
105
+ if (results && results.length > 0) {
106
+ await results[0].select();
107
+ }
108
+ }
109
+ /**
110
+ * Clicks the "Add" button in the autocomplete search results panel.
111
+ * (The "Add" functionality is not included in the public API
112
+ * of a "vanilla" autocomplete component, so this method is protected
113
+ * to prevent consumers of the autocomplete harness from calling it.
114
+ * The lookup harness, which extends the autocomplete harness, may
115
+ * still access this feature, however.)
116
+ */
117
+ async clickAddButton() {
118
+ const overlay = await this.#getOverlay();
119
+ if (!overlay) {
120
+ throw new Error('Unable to find the "Add" button. The autocomplete is closed.');
121
+ }
122
+ const button = await overlay.querySelector('button.sky-autocomplete-action-add');
123
+ if (!button) {
124
+ throw new Error('The "Add" button cannot be clicked because it does not exist.');
125
+ }
126
+ await button.click();
127
+ }
128
+ /**
129
+ * Clicks the "Show more" button.
130
+ * (The "Show more" functionality is not included in the public API
131
+ * of a "vanilla" autocomplete component, so this method is protected
132
+ * to prevent consumers of the autocomplete harness from calling it.
133
+ * The lookup harness, which extends the autocomplete harness, may
134
+ * still access this feature, however.)
135
+ */
136
+ async clickShowMoreButton() {
137
+ const overlay = await this.#getOverlay();
138
+ if (!overlay) {
139
+ throw new Error('Unable to find the "Show more" button. ' +
140
+ 'The autocomplete is closed.');
141
+ }
142
+ const button = await overlay.querySelector('button.sky-autocomplete-action-more');
143
+ if (!button) {
144
+ throw new Error('The "Show more" button cannot be clicked because it does not exist.');
145
+ }
146
+ await button.click();
147
+ }
148
+ async #getOverlay() {
149
+ const overlayId = await (await this.#getInput()).getAriaOwns();
150
+ return overlayId
151
+ ? this.#documentRootLocator.locatorForOptional(SkyOverlayHarness.with({ selector: `#${overlayId}` }))()
152
+ : null;
153
+ }
154
+ }
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUcxRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBQzdEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxrQkFBa0IsQ0FBQztJQUVoRCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUV6RCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRXpEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQXNDO1FBRXRDLE9BQU8sc0JBQXNCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBSztRQUNoQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWE7UUFDbEMsT0FBTyxDQUFD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Y2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MsIFNreU92ZXJsYXlIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9hdXRvY29tcGxldGUtaGFybmVzcy1maWx0ZXJzJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUlucHV0SGFybmVzcyB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWlucHV0LWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0SGFybmVzcyB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLXNlYXJjaC1yZXN1bHQtaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLXNlYXJjaC1yZXN1bHQtaGFybmVzcy1maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGFuIGF1dG9jb21wbGV0ZSBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUF1dG9jb21wbGV0ZUhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LWF1dG9jb21wbGV0ZSc7XG5cbiAgI2RvY3VtZW50Um9vdExvY2F0b3IgPSB0aGlzLmRvY3VtZW50Um9vdExvY2F0b3JGYWN0b3J5KCk7XG5cbiAgI2dldElucHV0ID0gdGhpcy5sb2NhdG9yRm9yKFNreUF1dG9jb21wbGV0ZUlucHV0SGFybmVzcyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUF1dG9jb21wbGV0ZUhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lBdXRvY29tcGxldGVIYXJuZXNzRmlsdGVyc1xuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUF1dG9jb21wbGV0ZUhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5QXV0b2NvbXBsZXRlSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQmx1cnMgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBibHVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuYmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgaW5wdXQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGVycyB0ZXh0IGludG8gdGhlIGF1dG9jb21wbGV0ZSBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBlbnRlclRleHQodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZW50ZXJUZXh0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBhdXRvY29tcGxldGUgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgc2VhcmNoIHJlc3VsdCBoYXJuZXNzZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2VhcmNoUmVzdWx0cyhcbiAgICBmaWx0ZXJzPzogU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnNcbiAgKTogUHJvbWlzZTxTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzW10+IHtcbiAgICBjb25zdCBvdmVybGF5ID0gYXdhaXQgdGhpcy4jZ2V0T3ZlcmxheSgpO1xuXG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gcmV0cmlldmUgc2VhcmNoIHJlc3VsdHMuIFRoZSBhdXRvY29tcGxldGUgaXMgY2xvc2VkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFybmVzc2VzID0gYXdhaXQgb3ZlcmxheS5xdWVyeUhhcm5lc3NlcyhcbiAgICAgIFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdEhhcm5lc3Mud2l0aChmaWx0ZXJzIHx8IHt9KVxuICAgICk7XG5cbiAgICBpZiAoZmlsdGVycyAmJiBoYXJuZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBTdHJpbmdpZnkgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBzbyB0aGF0IGl0J3MgcmVhZGFibGUgaW4gdGhlIGNvbnNvbGUgbG9nLlxuICAgICAgaWYgKGZpbHRlcnMudGV4dCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICBmaWx0ZXJzLnRleHQgPSBmaWx0ZXJzLnRleHQudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgc2VhcmNoIHJlc3VsdHMgbWF0Y2hpbmcgZmlsdGVyKHMpOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIGZpbHRlcnNcbiAgICAgICAgKX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBoYXJuZXNzZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGV4dCBjb250ZW50IGZvciBlYWNoIHNlYXJjaCByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2VhcmNoUmVzdWx0c1RleHQoXG4gICAgZmlsdGVycz86IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBoYXJuZXNzZXMgPSBhd2FpdCB0aGlzLmdldFNlYXJjaFJlc3VsdHMoZmlsdGVycyk7XG5cbiAgICBjb25zdCB0ZXh0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaGFybmVzcyBvZiBoYXJuZXNzZXMpIHtcbiAgICAgIHRleHQucHVzaChhd2FpdCBoYXJuZXNzLmdldFRleHQoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgaW5wdXQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmlzRGlzYWJsZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgaW5wdXQgaXMgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0ZvY3VzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5pc0ZvY3VzZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc09wZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGF3YWl0IHRoaXMuI2dldE92ZXJsYXkoKTtcbiAgICByZXR1cm4gISFvdmVybGF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBzZWFyY2ggcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbGVjdFNlYXJjaFJlc3VsdChcbiAgICBmaWx0ZXJzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVyc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKGZpbHRlcnMpO1xuICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgcmVzdWx0c1swXS5zZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBcIkFkZFwiIGJ1dHRvbiBpbiB0aGUgYXV0b2NvbXBsZXRlIHNlYXJjaCByZXN1bHRzIHBhbmVsLlxuICAgKiAoVGhlIFwiQWRkXCIgZnVuY3Rpb25hbGl0eSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHB1YmxpYyBBUElcbiAgICogb2YgYSBcInZhbmlsbGFcIiBhdXRvY29tcGxldGUgY29tcG9uZW50LCBzbyB0aGlzIG1ldGhvZCBpcyBwcm90ZWN0ZWRcbiAgICogdG8gcHJldmVudCBjb25zdW1lcnMgb2YgdGhlIGF1dG9jb21wbGV0ZSBoYXJuZXNzIGZyb20gY2FsbGluZyBpdC5cbiAgICogVGhlIGxvb2t1cCBoYXJuZXNzLCB3aGljaCBleHRlbmRzIHRoZSBhdXRvY29tcGxldGUgaGFybmVzcywgbWF5XG4gICAqIHN0aWxsIGFjY2VzcyB0aGlzIGZlYXR1cmUsIGhvd2V2ZXIuKVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGNsaWNrQWRkQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBhd2FpdCB0aGlzLiNnZXRPdmVybGF5KCk7XG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgXCJBZGRcIiBidXR0b24uIFRoZSBhdXRvY29tcGxldGUgaXMgY2xvc2VkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgb3ZlcmxheS5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2J1dHRvbi5za3ktYXV0b2NvbXBsZXRlLWFjdGlvbi1hZGQnXG4gICAgKTtcblxuICAgIGlmICghYnV0dG9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgXCJBZGRcIiBidXR0b24gY2Fubm90IGJlIGNsaWNrZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGF3YWl0IGJ1dHRvbi5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgXCJTaG93IG1vcmVcIiBidXR0b24uXG4gICAqIChUaGUgXCJTaG93IG1vcmVcIiBmdW5jdGlvbmFsaXR5IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgcHVibGljIEFQSVxuICAgKiBvZiBhIFwidmFuaWxsYVwiIGF1dG9jb21wbGV0ZSBjb21wb25lbnQsIHNvIHRoaXMgbWV0aG9kIGlzIHByb3RlY3RlZFxuICAgKiB0byBwcmV2ZW50IGNvbnN1bWVycyBvZiB0aGUgYXV0b2NvbXBsZXRlIGhhcm5lc3MgZnJvbSBjYWxsaW5nIGl0LlxuICAgKiBUaGUgbG9va3VwIGhhcm5lc3MsIHdoaWNoIGV4dGVuZHMgdGhlIGF1dG9jb21wbGV0ZSBoYXJuZXNzLCBtYXlcbiAgICogc3RpbGwgYWNjZXNzIHRoaXMgZmVhdHVyZSwgaG93ZXZlci4pXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY2xpY2tTaG93TW9yZUJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvdmVybGF5ID0gYXdhaXQgdGhpcy4jZ2V0T3ZlcmxheSgpO1xuXG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgXCJTaG93IG1vcmVcIiBidXR0b24uICcgK1xuICAgICAgICAgICdUaGUgYXV0b2NvbXBsZXRlIGlzIGNsb3NlZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IG92ZXJsYXkucXVlcnlTZWxlY3RvcihcbiAgICAgICdidXR0b24uc2t5LWF1dG9jb21wbGV0ZS1hY3Rpb24tbW9yZSdcbiAgICApO1xuXG4gICAgaWYgKCFidXR0b24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSBcIlNob3cgbW9yZVwiIGJ1dHRvbiBjYW5ub3QgYmUgY2xpY2tlZCBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0LidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0T3ZlcmxheSgpOiBQcm9taXNlPFNreU92ZXJsYXlIYXJuZXNzIHwgbnVsbD4ge1xuICAgIGNvbnN0IG92ZXJsYXlJZCA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBcmlhT3ducygpO1xuXG4gICAgcmV0dXJuIG92ZXJsYXlJZFxuICAgICAgPyB0aGlzLiNkb2N1bWVudFJvb3RMb2NhdG9yLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAgICAgICBTa3lPdmVybGF5SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGAjJHtvdmVybGF5SWR9YCB9KVxuICAgICAgICApKClcbiAgICAgIDogbnVsbDtcbiAgfVxufVxuIl19
@@ -0,0 +1,63 @@
1
+ import { ComponentHarness } from '@angular/cdk/testing';
2
+ /**
3
+ * @internal
4
+ */
5
+ export class SkyAutocompleteInputHarness extends ComponentHarness {
6
+ /**
7
+ * @internal
8
+ */
9
+ static { this.hostSelector = '[skyAutocomplete]'; }
10
+ /**
11
+ * Blurs the input.
12
+ */
13
+ async blur() {
14
+ return (await this.host()).blur();
15
+ }
16
+ /**
17
+ * Clears the input value.
18
+ */
19
+ async clear() {
20
+ return (await this.host()).clear();
21
+ }
22
+ /**
23
+ * Enters text into the input.
24
+ */
25
+ async enterText(value) {
26
+ const el = await this.host();
27
+ await el.focus();
28
+ await el.clear();
29
+ await el.sendKeys(value);
30
+ }
31
+ /**
32
+ * Focuses the input.
33
+ */
34
+ async focus() {
35
+ return (await this.host()).focus();
36
+ }
37
+ /**
38
+ * Gets the value of the input.
39
+ */
40
+ async getValue() {
41
+ return (await this.host()).getProperty('value');
42
+ }
43
+ /**
44
+ * Whether the input is disabled.
45
+ */
46
+ async isDisabled() {
47
+ const disabled = await (await this.host()).getAttribute('disabled');
48
+ return disabled !== null;
49
+ }
50
+ /**
51
+ * Whether the input is focused.
52
+ */
53
+ async isFocused() {
54
+ return (await this.host()).isFocused();
55
+ }
56
+ /**
57
+ * Returns the value of the input's `aria-owns` attribute.
58
+ */
59
+ async getAriaOwns() {
60
+ return (await this.host()).getAttribute('aria-owns');
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWlucHV0LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxnQkFBZ0I7SUFDL0Q7O09BRUc7YUFDVyxpQkFBWSxHQUFHLG1CQUFtQixDQUFDO0lBRWpEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBSztRQUNoQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWE7UUFDbEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRO1FBQ25CLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEUsT0FBTyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUF1dG9jb21wbGV0ZUlucHV0SGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdbc2t5QXV0b2NvbXBsZXRlXSc7XG5cbiAgLyoqXG4gICAqIEJsdXJzIHRoZSBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBibHVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLmJsdXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsZWFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJzIHRleHQgaW50byB0aGUgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW50ZXJUZXh0KHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlbCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuICAgIGF3YWl0IGVsLmZvY3VzKCk7XG4gICAgYXdhaXQgZWwuY2xlYXIoKTtcbiAgICBhd2FpdCBlbC5zZW5kS2V5cyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmhvc3QoKSkuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VmFsdWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaG9zdCgpKS5nZXRQcm9wZXJ0eSgndmFsdWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0Rpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRpc2FibGVkID0gYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgcmV0dXJuIGRpc2FibGVkICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGZvY3VzZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNGb2N1c2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLmlzRm9jdXNlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBpbnB1dCdzIGBhcmlhLW93bnNgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRBcmlhT3ducygpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaG9zdCgpKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtb3ducycpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { ComponentHarness, HarnessPredicate, } from '@angular/cdk/testing';
2
+ /**
3
+ * Harness for interacting with an autocomplete search results in tests.
4
+ * @internal
5
+ */
6
+ export class SkyAutocompleteSearchResultHarness extends ComponentHarness {
7
+ /**
8
+ * @internal
9
+ */
10
+ static { this.hostSelector = '.sky-autocomplete-result'; }
11
+ /**
12
+ * Gets a `HarnessPredicate` that can be used to search for a
13
+ * `SkyAutocompleteSearchResultHarness` that meets certain criteria.
14
+ */
15
+ static with(filters) {
16
+ return new HarnessPredicate(SkyAutocompleteSearchResultHarness, filters).addOption('textContent', filters.text, async (harness, text) => HarnessPredicate.stringMatches(await harness.getText(), text));
17
+ }
18
+ /**
19
+ * Returns the value of the search result's descriptor property.
20
+ * This value is set by the autocomplete's `descriptorProperty` input.
21
+ */
22
+ async getDescriptorValue() {
23
+ return (await (await this.host()).getAttribute('data-descriptor-value'));
24
+ }
25
+ /**
26
+ * Returns a child harness.
27
+ */
28
+ async queryHarness(query) {
29
+ return this.locatorForOptional(query)();
30
+ }
31
+ /**
32
+ * Selects the search result.
33
+ */
34
+ async select() {
35
+ return (await this.host()).click();
36
+ }
37
+ /**
38
+ * Returns the text of the search result.
39
+ */
40
+ async getText() {
41
+ return (await this.host()).text();
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlYXJjaC1yZXN1bHQtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvdGVzdGluZy9zcmMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1zZWFyY2gtcmVzdWx0LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FFakIsTUFBTSxzQkFBc0IsQ0FBQztBQUk5Qjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsZ0JBQWdCO0lBQ3RFOztPQUVHO2FBQ1csaUJBQVksR0FBRywwQkFBMEIsQ0FBQztJQUV4RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFrRDtRQUVsRCxPQUFPLElBQUksZ0JBQWdCLENBQ3pCLGtDQUFrQyxFQUNsQyxPQUFPLENBQ1IsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUMvRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzlELENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGtCQUFrQjtRQUM3QixPQUFPLENBQUMsTUFBTSxDQUNaLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUNsQixDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFXLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FDdkIsS0FBc0I7UUFFdEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50SGFybmVzcyxcbiAgSGFybmVzc1ByZWRpY2F0ZSxcbiAgSGFybmVzc1F1ZXJ5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9hdXRvY29tcGxldGUtc2VhcmNoLXJlc3VsdC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYW4gYXV0b2NvbXBsZXRlIHNlYXJjaCByZXN1bHRzIGluIHRlc3RzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJy5za3ktYXV0b2NvbXBsZXRlLXJlc3VsdCc7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVyc1xuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdEhhcm5lc3M+IHtcbiAgICByZXR1cm4gbmV3IEhhcm5lc3NQcmVkaWNhdGUoXG4gICAgICBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzLFxuICAgICAgZmlsdGVyc1xuICAgICkuYWRkT3B0aW9uKCd0ZXh0Q29udGVudCcsIGZpbHRlcnMudGV4dCwgYXN5bmMgKGhhcm5lc3MsIHRleHQpID0+XG4gICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoYXdhaXQgaGFybmVzcy5nZXRUZXh0KCksIHRleHQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc2VhcmNoIHJlc3VsdCdzIGRlc2NyaXB0b3IgcHJvcGVydHkuXG4gICAqIFRoaXMgdmFsdWUgaXMgc2V0IGJ5IHRoZSBhdXRvY29tcGxldGUncyBgZGVzY3JpcHRvclByb3BlcnR5YCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXREZXNjcmlwdG9yVmFsdWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuaG9zdCgpXG4gICAgKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZGVzY3JpcHRvci12YWx1ZScpKSBhcyBzdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNoaWxkIGhhcm5lc3MuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcXVlcnlIYXJuZXNzPFQgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzPihcbiAgICBxdWVyeTogSGFybmVzc1F1ZXJ5PFQ+XG4gICk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwocXVlcnkpKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgc2VhcmNoIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZWxlY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmhvc3QoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZXh0IG9mIHRoZSBzZWFyY2ggcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaG9zdCgpKS50ZXh0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,118 @@
1
+ import { By } from '@angular/platform-browser';
2
+ import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
+ /**
4
+ * Allows interaction with a SKY UX country field component.
5
+ * @internal
6
+ */
7
+ export class SkyCountryFieldFixture {
8
+ #debugEl;
9
+ /**
10
+ * The value of the input field's autocomplete attribute.
11
+ */
12
+ get autocompleteAttribute() {
13
+ return this.#getInputElement().getAttribute('autocomplete');
14
+ }
15
+ /**
16
+ * A flag indicating if the country flag is currently visible.
17
+ * The flag will be visible only if a selection has been made
18
+ * and if the hideSelectedCountryFlag option is false.
19
+ */
20
+ get countryFlagIsVisible() {
21
+ const flag = this.#getCountryFlag();
22
+ return flag !== null;
23
+ }
24
+ /**
25
+ * A flag indicating whether or not the input has been disabled.
26
+ */
27
+ get disabled() {
28
+ return this.#getInputElement().disabled;
29
+ }
30
+ /**
31
+ * The value of the input field.
32
+ */
33
+ get searchText() {
34
+ return this.#getInputElement().value;
35
+ }
36
+ #fixture;
37
+ constructor(fixture, skyTestId) {
38
+ this.#fixture = fixture;
39
+ this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-country-field');
40
+ }
41
+ /**
42
+ * Enters the search text into the input field displaying search results, but making no selection.
43
+ * @param searchText The name of the country to select.
44
+ * @returns The list of country names matching the search text.
45
+ */
46
+ async search(searchText) {
47
+ const resultNodes = await this.#searchAndGetResults(searchText, this.#fixture);
48
+ const resultArray = Array.prototype.slice.call(resultNodes);
49
+ const results = resultArray.map((result) => {
50
+ const countryNameEl = result.querySelector('.sky-highlight-mark');
51
+ const countryName = SkyAppTestUtility.getText(countryNameEl);
52
+ return countryName;
53
+ });
54
+ this.#fixture.detectChanges();
55
+ await this.#fixture.whenStable();
56
+ return results;
57
+ }
58
+ /**
59
+ * Enters the search text into the input field and selects the first result (if any).
60
+ * @param searchText The name of the country to select.
61
+ */
62
+ async searchAndSelectFirstResult(searchText) {
63
+ await this.#searchAndSelect(searchText, 0, this.#fixture);
64
+ this.#fixture.detectChanges();
65
+ return this.#fixture.whenStable();
66
+ }
67
+ /**
68
+ * Clears the country selection and input field.
69
+ */
70
+ clear() {
71
+ this.#enterSearch('', this.#fixture);
72
+ this.#fixture.detectChanges();
73
+ return this.#fixture.whenStable();
74
+ }
75
+ //#region helpers
76
+ #getCountryFlag() {
77
+ return this.#debugEl.query(By.css('.sky-country-field-flag'));
78
+ }
79
+ #getAutocompleteElement() {
80
+ return document.querySelector('.sky-autocomplete-results');
81
+ }
82
+ #getInputElement() {
83
+ const debugEl = this.#debugEl.query(By.css('textarea'));
84
+ return debugEl.nativeElement;
85
+ }
86
+ #blurInput(fixture) {
87
+ SkyAppTestUtility.fireDomEvent(this.#getInputElement(), 'blur');
88
+ fixture.detectChanges();
89
+ return fixture.whenStable();
90
+ }
91
+ #enterSearch(newValue, fixture) {
92
+ const inputElement = this.#getInputElement();
93
+ inputElement.value = newValue;
94
+ SkyAppTestUtility.fireDomEvent(inputElement, 'focus');
95
+ SkyAppTestUtility.fireDomEvent(inputElement, 'keyup');
96
+ SkyAppTestUtility.fireDomEvent(inputElement, 'input');
97
+ fixture.detectChanges();
98
+ return fixture.whenStable();
99
+ }
100
+ async #searchAndGetResults(newValue, fixture) {
101
+ await this.#enterSearch(newValue, fixture);
102
+ fixture.detectChanges();
103
+ await fixture.whenStable();
104
+ return this.#getAutocompleteElement().querySelectorAll('.sky-autocomplete-result');
105
+ }
106
+ async #searchAndSelect(newValue, index, fixture) {
107
+ const inputElement = this.#getInputElement();
108
+ const searchResults = await this.#searchAndGetResults(newValue, fixture);
109
+ if (searchResults.length < index + 1) {
110
+ throw new Error('Index out of range for results');
111
+ }
112
+ // Note: the ordering of these events is important!
113
+ SkyAppTestUtility.fireDomEvent(inputElement, 'change');
114
+ SkyAppTestUtility.fireDomEvent(searchResults[index], 'mousedown');
115
+ this.#blurInput(fixture);
116
+ }
117
+ }
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC1maXh0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC90ZXN0aW5nL3NyYy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQtZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxRQUFRLENBQWU7SUFFdkI7O09BRUc7SUFDSCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsb0JBQW9CO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQyxPQUFPLElBQUksS0FBSyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUF3QjtJQUVoQyxZQUFZLE9BQThCLEVBQUUsU0FBaUI7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FDdkQsT0FBTyxFQUNQLFNBQVMsRUFDVCxtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQjtRQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FDakQsVUFBVSxFQUNWLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBbUIsRUFBRSxFQUFFO1lBQ3RELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNsRSxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFFLENBQUM7WUFDOUQsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVqQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLDBCQUEwQixDQUFDLFVBQWtCO1FBQ3hELE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBZ0IsQ0FBQztJQUM1RSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sT0FBTyxDQUFDLGFBQW9DLENBQUM7SUFDdEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUE4QjtRQUN2QyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZLENBQ1YsUUFBZ0IsRUFDaEIsT0FBOEI7UUFFOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDOUIsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELGlCQUFpQixDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQ3hCLFFBQWdCLEVBQ2hCLE9BQThCO1FBRTlCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsZ0JBQWdCLENBQ3BELDBCQUEwQixDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsUUFBZ0IsRUFDaEIsS0FBYSxFQUNiLE9BQThCO1FBRTlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV6RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxtREFBbUQ7UUFDbkQsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTa3lBcHBUZXN0VXRpbGl0eSB9IGZyb20gJ0Bza3l1eC1zZGsvdGVzdGluZyc7XG5cbi8qKlxuICogQWxsb3dzIGludGVyYWN0aW9uIHdpdGggYSBTS1kgVVggY291bnRyeSBmaWVsZCBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNvdW50cnlGaWVsZEZpeHR1cmUge1xuICAjZGVidWdFbDogRGVidWdFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkJ3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlQXR0cmlidXRlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLiNnZXRJbnB1dEVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBjb3VudHJ5IGZsYWcgaXMgY3VycmVudGx5IHZpc2libGUuXG4gICAqIFRoZSBmbGFnIHdpbGwgYmUgdmlzaWJsZSBvbmx5IGlmIGEgc2VsZWN0aW9uIGhhcyBiZWVuIG1hZGVcbiAgICogYW5kIGlmIHRoZSBoaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZyBvcHRpb24gaXMgZmFsc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNvdW50cnlGbGFnSXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZsYWcgPSB0aGlzLiNnZXRDb3VudHJ5RmxhZygpO1xuICAgIHJldHVybiBmbGFnICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCBoYXMgYmVlbiBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2dldElucHV0RWxlbWVudCgpLmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlYXJjaFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0SW5wdXRFbGVtZW50KCkudmFsdWU7XG4gIH1cblxuICAjZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Piwgc2t5VGVzdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLiNmaXh0dXJlID0gZml4dHVyZTtcbiAgICB0aGlzLiNkZWJ1Z0VsID0gU2t5QXBwVGVzdFV0aWxpdHkuZ2V0RGVidWdFbGVtZW50QnlUZXN0SWQoXG4gICAgICBmaXh0dXJlLFxuICAgICAgc2t5VGVzdElkLFxuICAgICAgJ3NreS1jb3VudHJ5LWZpZWxkJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJzIHRoZSBzZWFyY2ggdGV4dCBpbnRvIHRoZSBpbnB1dCBmaWVsZCBkaXNwbGF5aW5nIHNlYXJjaCByZXN1bHRzLCBidXQgbWFraW5nIG5vIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHNlYXJjaFRleHQgVGhlIG5hbWUgb2YgdGhlIGNvdW50cnkgdG8gc2VsZWN0LlxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBjb3VudHJ5IG5hbWVzIG1hdGNoaW5nIHRoZSBzZWFyY2ggdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZWFyY2goc2VhcmNoVGV4dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJlc3VsdE5vZGVzID0gYXdhaXQgdGhpcy4jc2VhcmNoQW5kR2V0UmVzdWx0cyhcbiAgICAgIHNlYXJjaFRleHQsXG4gICAgICB0aGlzLiNmaXh0dXJlXG4gICAgKTtcbiAgICBjb25zdCByZXN1bHRBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHJlc3VsdE5vZGVzKTtcbiAgICBjb25zdCByZXN1bHRzID0gcmVzdWx0QXJyYXkubWFwKChyZXN1bHQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBjb3VudHJ5TmFtZUVsID0gcmVzdWx0LnF1ZXJ5U2VsZWN0b3IoJy5za3ktaGlnaGxpZ2h0LW1hcmsnKTtcbiAgICAgIGNvbnN0IGNvdW50cnlOYW1lID0gU2t5QXBwVGVzdFV0aWxpdHkuZ2V0VGV4dChjb3VudHJ5TmFtZUVsKSE7XG4gICAgICByZXR1cm4gY291bnRyeU5hbWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNmaXh0dXJlLndoZW5TdGFibGUoKTtcblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGVycyB0aGUgc2VhcmNoIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQgYW5kIHNlbGVjdHMgdGhlIGZpcnN0IHJlc3VsdCAoaWYgYW55KS5cbiAgICogQHBhcmFtIHNlYXJjaFRleHQgVGhlIG5hbWUgb2YgdGhlIGNvdW50cnkgdG8gc2VsZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlYXJjaEFuZFNlbGVjdEZpcnN0UmVzdWx0KHNlYXJjaFRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI3NlYXJjaEFuZFNlbGVjdChzZWFyY2hUZXh0LCAwLCB0aGlzLiNmaXh0dXJlKTtcblxuICAgIHRoaXMuI2ZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiB0aGlzLiNmaXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGNvdW50cnkgc2VsZWN0aW9uIGFuZCBpbnB1dCBmaWVsZC5cbiAgICovXG4gIHB1YmxpYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLiNlbnRlclNlYXJjaCgnJywgdGhpcy4jZml4dHVyZSk7XG5cbiAgICB0aGlzLiNmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdGhpcy4jZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAvLyNyZWdpb24gaGVscGVyc1xuXG4gICNnZXRDb3VudHJ5RmxhZygpOiBEZWJ1Z0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnLnNreS1jb3VudHJ5LWZpZWxkLWZsYWcnKSk7XG4gIH1cblxuICAjZ2V0QXV0b2NvbXBsZXRlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktYXV0b2NvbXBsZXRlLXJlc3VsdHMnKSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gICNnZXRJbnB1dEVsZW1lbnQoKTogSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gICAgY29uc3QgZGVidWdFbCA9IHRoaXMuI2RlYnVnRWwucXVlcnkoQnkuY3NzKCd0ZXh0YXJlYScpKTtcbiAgICByZXR1cm4gZGVidWdFbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gIH1cblxuICAjYmx1cklucHV0KGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Pik6IFByb21pc2U8dm9pZD4ge1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudCh0aGlzLiNnZXRJbnB1dEVsZW1lbnQoKSwgJ2JsdXInKTtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAjZW50ZXJTZWFyY2goXG4gICAgbmV3VmFsdWU6IHN0cmluZyxcbiAgICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy4jZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgU2t5QXBwVGVzdFV0aWxpdHkuZmlyZURvbUV2ZW50KGlucHV0RWxlbWVudCwgJ2ZvY3VzJyk7XG4gICAgU2t5QXBwVGVzdFV0aWxpdHkuZmlyZURvbUV2ZW50KGlucHV0RWxlbWVudCwgJ2tleXVwJyk7XG4gICAgU2t5QXBwVGVzdFV0aWxpdHkuZmlyZURvbUV2ZW50KGlucHV0RWxlbWVudCwgJ2lucHV0Jyk7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIGZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgI3NlYXJjaEFuZEdldFJlc3VsdHMoXG4gICAgbmV3VmFsdWU6IHN0cmluZyxcbiAgICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT5cbiAgKTogUHJvbWlzZTxOb2RlTGlzdE9mPEhUTUxFbGVtZW50Pj4ge1xuICAgIGF3YWl0IHRoaXMuI2VudGVyU2VhcmNoKG5ld1ZhbHVlLCBmaXh0dXJlKTtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICBhd2FpdCBmaXh0dXJlLndoZW5TdGFibGUoKTtcbiAgICByZXR1cm4gdGhpcy4jZ2V0QXV0b2NvbXBsZXRlRWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnLnNreS1hdXRvY29tcGxldGUtcmVzdWx0J1xuICAgICk7XG4gIH1cblxuICBhc3luYyAjc2VhcmNoQW5kU2VsZWN0KFxuICAgIG5ld1ZhbHVlOiBzdHJpbmcsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy4jZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGF3YWl0IHRoaXMuI3NlYXJjaEFuZEdldFJlc3VsdHMobmV3VmFsdWUsIGZpeHR1cmUpO1xuXG4gICAgaWYgKHNlYXJjaFJlc3VsdHMubGVuZ3RoIDwgaW5kZXggKyAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZSBmb3IgcmVzdWx0cycpO1xuICAgIH1cblxuICAgIC8vIE5vdGU6IHRoZSBvcmRlcmluZyBvZiB0aGVzZSBldmVudHMgaXMgaW1wb3J0YW50IVxuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChpbnB1dEVsZW1lbnQsICdjaGFuZ2UnKTtcbiAgICBTa3lBcHBUZXN0VXRpbGl0eS5maXJlRG9tRXZlbnQoc2VhcmNoUmVzdWx0c1tpbmRleF0sICdtb3VzZWRvd24nKTtcbiAgICB0aGlzLiNibHVySW5wdXQoZml4dHVyZSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb24gaGVscGVyc1xufVxuIl19
@@ -5,14 +5,14 @@ import * as i0 from "@angular/core";
5
5
  * @internal
6
6
  */
7
7
  export class SkyCountryFieldTestingModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyCountryFieldTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyCountryFieldTestingModule, exports: [SkyCountryFieldModule] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyCountryFieldTestingModule, imports: [SkyCountryFieldModule] }); }
8
11
  }
9
- SkyCountryFieldTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCountryFieldTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- SkyCountryFieldTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyCountryFieldTestingModule, exports: [SkyCountryFieldModule] });
11
- SkyCountryFieldTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCountryFieldTestingModule, imports: [SkyCountryFieldModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCountryFieldTestingModule, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyCountryFieldTestingModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  exports: [SkyCountryFieldModule],
16
16
  }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC10ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvdGVzdGluZy9zcmMvY291bnRyeS1maWVsZC9jb3VudHJ5LWZpZWxkLXRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV0RDs7R0FFRztBQUlILE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7MEhBQTVCLDRCQUE0QixZQUY3QixxQkFBcUI7MEhBRXBCLDRCQUE0QixZQUY3QixxQkFBcUI7MkZBRXBCLDRCQUE0QjtrQkFIeEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Q291bnRyeUZpZWxkTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lDb3VudHJ5RmllbGRNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3VudHJ5RmllbGRUZXN0aW5nTW9kdWxlIHt9XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC10ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvdGVzdGluZy9zcmMvY291bnRyeS1maWVsZC9jb3VudHJ5LWZpZWxkLXRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV0RDs7R0FFRztBQUlILE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjsrR0FBNUIsNEJBQTRCLFlBRjdCLHFCQUFxQjsrR0FFcEIsNEJBQTRCLFlBRjdCLHFCQUFxQjs7MkZBRXBCLDRCQUE0QjtrQkFIeEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Q291bnRyeUZpZWxkTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lDb3VudHJ5RmllbGRNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3VudHJ5RmllbGRUZXN0aW5nTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,76 @@
1
+ import { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';
2
+ import { SkyLookupSelectionsListHarness } from './lookup-selections-list-harness';
3
+ import { SkyLookupShowMorePickerHarness } from './lookup-show-more-picker-harness';
4
+ /**
5
+ * Harness for interacting with a lookup component in tests.
6
+ */
7
+ export class SkyLookupHarness extends SkyAutocompleteHarness {
8
+ /**
9
+ * Finds a standard lookup component, or a lookup component that is wrapped by an input box component.
10
+ * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-lookup`
11
+ * element is removed from the DOM.
12
+ * @internal
13
+ */
14
+ static { this.hostSelector = 'sky-lookup,.sky-input-box'; }
15
+ #documentRootLocator = this.documentRootLocatorFactory();
16
+ #getAutocompleteHarness = this.locatorFor(SkyAutocompleteHarness);
17
+ #getSelectionsListHarness = this.locatorFor(SkyLookupSelectionsListHarness);
18
+ #getWrapper = this.locatorFor('.sky-lookup');
19
+ /**
20
+ * Gets a `HarnessPredicate` that can be used to search for a
21
+ * `SkyLookupHarness` that meets certain criteria.
22
+ */
23
+ static with(filters) {
24
+ return SkyLookupHarness.getDataSkyIdPredicate(filters);
25
+ }
26
+ /**
27
+ * Clicks the "Add" button on the search results panel.
28
+ */
29
+ async clickAddButton() {
30
+ await this.focus();
31
+ await super.clickAddButton();
32
+ }
33
+ /**
34
+ * Clicks the "Show more" button on the search results panel.
35
+ */
36
+ async clickShowMoreButton() {
37
+ await this.focus();
38
+ await super.clickShowMoreButton();
39
+ }
40
+ /**
41
+ * Dismisses the selections made with a multiselect lookup.
42
+ */
43
+ async dismissSelections() {
44
+ return (await this.#getSelectionsListHarness()).dismissSelections();
45
+ }
46
+ /**
47
+ * Gets the "Show more" picker harness.
48
+ */
49
+ async getShowMorePicker() {
50
+ const pickerId = await (await (await this.#getAutocompleteHarness()).host()).getAttribute('data-sky-lookup-show-more-picker-id');
51
+ const defaultPicker = await this.#documentRootLocator.locatorForOptional(SkyLookupShowMorePickerHarness.with({ selector: `#${pickerId}` }))();
52
+ if (!defaultPicker) {
53
+ throw new Error('Cannot get the "Show more" picker because it is not open.');
54
+ }
55
+ return defaultPicker;
56
+ }
57
+ /**
58
+ * Gets a list of selections made with a multiselect lookup.
59
+ */
60
+ async getSelections() {
61
+ return (await this.#getSelectionsListHarness()).getSelections();
62
+ }
63
+ /**
64
+ * Gets the text content of all selections made with a multiselect lookup.
65
+ */
66
+ async getSelectionsText() {
67
+ return (await this.#getSelectionsListHarness()).getSelectionsText();
68
+ }
69
+ /**
70
+ * Whether the lookup allows for multiple selections.
71
+ */
72
+ async isMultiselect() {
73
+ return !(await (await this.#getWrapper()).hasClass('sky-lookup-single'));
74
+ }
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL2xvb2t1cC9sb29rdXAtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUk5RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVuRjs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxzQkFBc0I7SUFDMUQ7Ozs7O09BS0c7YUFDb0IsaUJBQVksR0FBRywyQkFBMkIsQ0FBQztJQUVsRSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUV6RCx1QkFBdUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFbEUseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBRTVFLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTdDOzs7T0FHRztJQUNJLE1BQU0sQ0FBVSxJQUFJLENBQ3pCLE9BQWdDO1FBRWhDLE9BQU8sZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ2EsS0FBSyxDQUFDLGNBQWM7UUFDbEMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsTUFBTSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ2EsS0FBSyxDQUFDLG1CQUFtQjtRQUN2QyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUNyQixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUNwRCxDQUFDLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUN0RSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQ2xFLEVBQUUsQ0FBQztRQUVKLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztTQUNIO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGFBQWE7UUFDeEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsYUFBYTtRQUN4QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVIYXJuZXNzIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1oYXJuZXNzJztcblxuaW1wb3J0IHsgU2t5TG9va3VwSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2xvb2t1cC1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2VsZWN0aW9uSGFybmVzcyB9IGZyb20gJy4vbG9va3VwLXNlbGVjdGlvbi1oYXJuZXNzJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdGlvbnNMaXN0SGFybmVzcyB9IGZyb20gJy4vbG9va3VwLXNlbGVjdGlvbnMtbGlzdC1oYXJuZXNzJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzcyB9IGZyb20gJy4vbG9va3VwLXNob3ctbW9yZS1waWNrZXItaGFybmVzcyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIGxvb2t1cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBIYXJuZXNzIGV4dGVuZHMgU2t5QXV0b2NvbXBsZXRlSGFybmVzcyB7XG4gIC8qKlxuICAgKiBGaW5kcyBhIHN0YW5kYXJkIGxvb2t1cCBjb21wb25lbnQsIG9yIGEgbG9va3VwIGNvbXBvbmVudCB0aGF0IGlzIHdyYXBwZWQgYnkgYW4gaW5wdXQgYm94IGNvbXBvbmVudC5cbiAgICogRm9yIGlucHV0IGJveCBpbXBsZW1lbnRhdGlvbnMsIHdlIG5lZWQgdG8gdXNlIHRoZSBgLnNreS1pbnB1dC1ib3hgIHNlbGVjdG9yIHNpbmNlIHRoZSBgc2t5LWxvb2t1cGBcbiAgICogZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGhvc3RTZWxlY3RvciA9ICdza3ktbG9va3VwLC5za3ktaW5wdXQtYm94JztcblxuICAjZG9jdW1lbnRSb290TG9jYXRvciA9IHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKTtcblxuICAjZ2V0QXV0b2NvbXBsZXRlSGFybmVzcyA9IHRoaXMubG9jYXRvckZvcihTa3lBdXRvY29tcGxldGVIYXJuZXNzKTtcblxuICAjZ2V0U2VsZWN0aW9uc0xpc3RIYXJuZXNzID0gdGhpcy5sb2NhdG9yRm9yKFNreUxvb2t1cFNlbGVjdGlvbnNMaXN0SGFybmVzcyk7XG5cbiAgI2dldFdyYXBwZXIgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktbG9va3VwJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUxvb2t1cEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lMb29rdXBIYXJuZXNzRmlsdGVyc1xuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUxvb2t1cEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5TG9va3VwSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBcIkFkZFwiIGJ1dHRvbiBvbiB0aGUgc2VhcmNoIHJlc3VsdHMgcGFuZWwuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgY2xpY2tBZGRCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5mb2N1cygpO1xuICAgIGF3YWl0IHN1cGVyLmNsaWNrQWRkQnV0dG9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBcIlNob3cgbW9yZVwiIGJ1dHRvbiBvbiB0aGUgc2VhcmNoIHJlc3VsdHMgcGFuZWwuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgY2xpY2tTaG93TW9yZUJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmZvY3VzKCk7XG4gICAgYXdhaXQgc3VwZXIuY2xpY2tTaG93TW9yZUJ1dHRvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyB0aGUgc2VsZWN0aW9ucyBtYWRlIHdpdGggYSBtdWx0aXNlbGVjdCBsb29rdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlzbWlzc1NlbGVjdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRTZWxlY3Rpb25zTGlzdEhhcm5lc3MoKSkuZGlzbWlzc1NlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBcIlNob3cgbW9yZVwiIHBpY2tlciBoYXJuZXNzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNob3dNb3JlUGlja2VyKCk6IFByb21pc2U8U2t5TG9va3VwU2hvd01vcmVQaWNrZXJIYXJuZXNzPiB7XG4gICAgY29uc3QgcGlja2VySWQgPSBhd2FpdCAoXG4gICAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0QXV0b2NvbXBsZXRlSGFybmVzcygpKS5ob3N0KClcbiAgICApLmdldEF0dHJpYnV0ZSgnZGF0YS1za3ktbG9va3VwLXNob3ctbW9yZS1waWNrZXItaWQnKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQaWNrZXIgPSBhd2FpdCB0aGlzLiNkb2N1bWVudFJvb3RMb2NhdG9yLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAgIFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGAjJHtwaWNrZXJJZH1gIH0pXG4gICAgKSgpO1xuXG4gICAgaWYgKCFkZWZhdWx0UGlja2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZ2V0IHRoZSBcIlNob3cgbW9yZVwiIHBpY2tlciBiZWNhdXNlIGl0IGlzIG5vdCBvcGVuLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRQaWNrZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2Ygc2VsZWN0aW9ucyBtYWRlIHdpdGggYSBtdWx0aXNlbGVjdCBsb29rdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0aW9ucygpOiBQcm9taXNlPFNreUxvb2t1cFNlbGVjdGlvbkhhcm5lc3NbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0U2VsZWN0aW9uc0xpc3RIYXJuZXNzKCkpLmdldFNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYWxsIHNlbGVjdGlvbnMgbWFkZSB3aXRoIGEgbXVsdGlzZWxlY3QgbG9va3VwLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNlbGVjdGlvbnNUZXh0KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldFNlbGVjdGlvbnNMaXN0SGFybmVzcygpKS5nZXRTZWxlY3Rpb25zVGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxvb2t1cCBhbGxvd3MgZm9yIG11bHRpcGxlIHNlbGVjdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNNdWx0aXNlbGVjdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gIShhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0V3JhcHBlcigpKS5oYXNDbGFzcygnc2t5LWxvb2t1cC1zaW5nbGUnKSk7XG4gIH1cbn1cbiJdfQ==