@skyux/datetime 11.25.0 → 11.27.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 (40) hide show
  1. package/documentation.json +897 -878
  2. package/esm2022/lib/modules/date-pipe/date-pipe.module.mjs +5 -5
  3. package/esm2022/lib/modules/date-pipe/date.pipe.mjs +4 -4
  4. package/esm2022/lib/modules/date-pipe/date.service.mjs +4 -4
  5. package/esm2022/lib/modules/date-pipe/fuzzy-date.pipe.mjs +4 -4
  6. package/esm2022/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +4 -4
  7. package/esm2022/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.mjs +4 -4
  8. package/esm2022/lib/modules/date-range-picker/date-range-picker.component.mjs +4 -4
  9. package/esm2022/lib/modules/date-range-picker/date-range-picker.module.mjs +5 -5
  10. package/esm2022/lib/modules/date-range-picker/date-range.service.mjs +4 -4
  11. package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +4 -4
  12. package/esm2022/lib/modules/datepicker/datepicker-calendar-label.pipe.mjs +4 -4
  13. package/esm2022/lib/modules/datepicker/datepicker-calendar.component.mjs +4 -4
  14. package/esm2022/lib/modules/datepicker/datepicker-config.service.mjs +4 -4
  15. package/esm2022/lib/modules/datepicker/datepicker-host.service.mjs +4 -4
  16. package/esm2022/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +4 -4
  17. package/esm2022/lib/modules/datepicker/datepicker-input.directive.mjs +4 -4
  18. package/esm2022/lib/modules/datepicker/datepicker.component.mjs +4 -4
  19. package/esm2022/lib/modules/datepicker/datepicker.module.mjs +5 -5
  20. package/esm2022/lib/modules/datepicker/datepicker.service.mjs +4 -4
  21. package/esm2022/lib/modules/datepicker/daypicker-button.component.mjs +4 -4
  22. package/esm2022/lib/modules/datepicker/daypicker-cell.component.mjs +4 -4
  23. package/esm2022/lib/modules/datepicker/daypicker.component.mjs +4 -4
  24. package/esm2022/lib/modules/datepicker/fuzzy-date.service.mjs +4 -4
  25. package/esm2022/lib/modules/datepicker/monthpicker.component.mjs +4 -4
  26. package/esm2022/lib/modules/datepicker/yearpicker.component.mjs +4 -4
  27. package/esm2022/lib/modules/shared/sky-datetime-resources.module.mjs +5 -5
  28. package/esm2022/lib/modules/timepicker/timepicker.component.mjs +4 -4
  29. package/esm2022/lib/modules/timepicker/timepicker.directive.mjs +4 -4
  30. package/esm2022/lib/modules/timepicker/timepicker.module.mjs +5 -5
  31. package/esm2022/testing/modules/date-range-picker/date-range-picker-harness.mjs +19 -15
  32. package/esm2022/testing/modules/datepicker/datepicker-harness.mjs +3 -2
  33. package/esm2022/testing/modules/datepicker/fuzzy-datepicker-input-harness.mjs +29 -0
  34. package/fesm2022/skyux-datetime-testing.mjs +47 -15
  35. package/fesm2022/skyux-datetime-testing.mjs.map +1 -1
  36. package/fesm2022/skyux-datetime.mjs +92 -92
  37. package/fesm2022/skyux-datetime.mjs.map +1 -1
  38. package/package.json +14 -14
  39. package/testing/modules/datepicker/datepicker-harness.d.ts +2 -1
  40. package/testing/modules/datepicker/fuzzy-datepicker-input-harness.d.ts +18 -0
@@ -35,9 +35,7 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
35
35
  * Gets the end date value.
36
36
  */
37
37
  async getEndDateValue() {
38
- if (!(await this.isEndDateVisible())) {
39
- throw new Error('Unable to get end date. End datepicker is not visible.');
40
- }
38
+ await this.#assertEndDateVisible('Unable to get end date.');
41
39
  const input = await (await this.#getEndDatepicker()).getControl();
42
40
  return await input.getValue();
43
41
  }
@@ -82,9 +80,7 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
82
80
  * Gets the start date value.
83
81
  */
84
82
  async getStartDateValue() {
85
- if (!(await this.isStartDateVisible())) {
86
- throw new Error('Unable to get start date. Start datepicker is not visible.');
87
- }
83
+ await this.#assertStartDateVisible('Unable to get start date.');
88
84
  const input = await (await this.#getStartDatepicker()).getControl();
89
85
  return await input.getValue();
90
86
  }
@@ -123,7 +119,8 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
123
119
  * Whether end date datepicker is visible.
124
120
  */
125
121
  async isEndDateVisible() {
126
- return !(await (await this.locatorFor('.sky-date-range-picker-end-date')()).getProperty('hidden'));
122
+ const hidden = await (await this.locatorFor('.sky-date-range-picker-end-date')()).getProperty('hidden');
123
+ return !hidden;
127
124
  }
128
125
  /**
129
126
  * Whether the date range picker has stacked enabled.
@@ -135,7 +132,8 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
135
132
  * Whether start date datepicker is visible.
136
133
  */
137
134
  async isStartDateVisible() {
138
- return !(await (await this.locatorFor('.sky-date-range-picker-start-date')()).getProperty('hidden'));
135
+ const hidden = await (await this.locatorFor('.sky-date-range-picker-start-date')()).getProperty('hidden');
136
+ return !hidden;
139
137
  }
140
138
  /**
141
139
  * Selects the specified calculator.
@@ -162,9 +160,7 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
162
160
  * @param newDate date input as a formatted string.
163
161
  */
164
162
  async setEndDateValue(newDate) {
165
- if (!(await this.isEndDateVisible())) {
166
- throw new Error('Unable to set end date. End datepicker is not visible.');
167
- }
163
+ await this.#assertEndDateVisible('Unable to set end date.');
168
164
  const input = await (await this.#getEndDatepicker()).getControl();
169
165
  await input.setValue(newDate);
170
166
  }
@@ -173,12 +169,20 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
173
169
  * @param newDate date input as a formatted string.
174
170
  */
175
171
  async setStartDateValue(newDate) {
176
- if (!(await this.isEndDateVisible())) {
177
- throw new Error('Unable to set start date. Start datepicker is not visible.');
178
- }
172
+ await this.#assertStartDateVisible('Unable to set start date.');
179
173
  const input = await (await this.#getStartDatepicker()).getControl();
180
174
  await input.setValue(newDate);
181
175
  }
176
+ async #assertEndDateVisible(message) {
177
+ if (!(await this.isEndDateVisible())) {
178
+ throw new Error(`${message} End datepicker is not visible.`);
179
+ }
180
+ }
181
+ async #assertStartDateVisible(message) {
182
+ if (!(await this.isStartDateVisible())) {
183
+ throw new Error(`${message} Start datepicker is not visible.`);
184
+ }
185
+ }
182
186
  async #getEndDatepicker() {
183
187
  return await (await this.#getEndDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
184
188
  }
@@ -186,4 +190,4 @@ export class SkyDateRangePickerHarness extends SkyComponentHarness {
186
190
  return await (await this.#getStartDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
187
191
  }
188
192
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS90ZXN0aW5nL3NyYy9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0lBQ2hFOztPQUVHO2FBQ1csaUJBQVksR0FBRyx1QkFBdUIsQ0FBQztJQUVyRCw0QkFBNEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUM1QyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDdEIsUUFBUSxFQUFFLG1DQUFtQztLQUM5QyxDQUFDLENBQ0gsQ0FBQztJQUNGLDBCQUEwQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQzFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUN0QixRQUFRLEVBQUUsaUNBQWlDO0tBQzVDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDL0Msa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ3RCLFFBQVEsRUFBRSwwQ0FBMEM7S0FDckQsQ0FBQyxDQUNILENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFrQztRQUVsQyxPQUFPLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0s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LENBQ2IsNERBQTRELENBQzdELENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwRSxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsT0FBTyxNQUFNLENBQ1gsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FDeEMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQjtRQUN2QixPQUFPLE1BQU0sQ0FDWCxNQUFNLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUMxQyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnQHNreXV4L2RhdGV0aW1lJztcbmltcG9ydCB7IFNreUlucHV0Qm94SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9mb3Jtcy90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckhhcm5lc3MgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGVwaWNrZXItaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreURhdGVSYW5nZVBpY2tlckZpbHRlcnMgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLWhhcm5lc3MuZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBkYXRlIHJhbmdlIHBpY2tlciBjb21wb25lbnRzIGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlUGlja2VySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZGF0ZS1yYW5nZS1waWNrZXInO1xuXG4gICNnZXRTdGFydERhdGVJbnB1dEJveEhhcm5lc3MgPSB0aGlzLmxvY2F0b3JGb3IoXG4gICAgU2t5SW5wdXRCb3hIYXJuZXNzLndpdGgoe1xuICAgICAgYW5jZXN0b3I6ICcuc2t5LWRhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUnLFxuICAgIH0pLFxuICApO1xuICAjZ2V0RW5kRGF0ZUlucHV0Qm94SGFybmVzcyA9IHRoaXMubG9jYXRvckZvcihcbiAgICBTa3lJbnB1dEJveEhhcm5lc3Mud2l0aCh7XG4gICAgICBhbmNlc3RvcjogJy5za3ktZGF0ZS1yYW5nZS1waWNrZXItZW5kLWRhdGUnLFxuICAgIH0pLFxuICApO1xuICAjZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzID0gdGhpcy5sb2NhdG9yRm9yKFxuICAgIFNreUlucHV0Qm94SGFybmVzcy53aXRoKHtcbiAgICAgIGFuY2VzdG9yOiAnLnNreS1kYXRlLXJhbmdlLXBpY2tlci1zZWxlY3QtY2FsY3VsYXRvcicsXG4gICAgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreURhdGVSYW5nZVBpY2tlckhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lEYXRlUmFuZ2VQaWNrZXJGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreURhdGVSYW5nZVBpY2tlckhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5RGF0ZVJhbmdlUGlja2VySGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKSkuY2xpY2tIZWxwSW5saW5lKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZW5kIGRhdGUgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RW5kRGF0ZVZhbHVlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5pc0VuZERhdGVWaXNpYmxlKCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBnZXQgZW5kIGRhdGUuIEVuZCBkYXRlcGlja2VyIGlzIG5vdCB2aXNpYmxlLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEVuZERhdGVwaWNrZXIoKSkuZ2V0Q29udHJvbCgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGlucHV0LmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJDb250ZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKVxuICAgICkuZ2V0SGVscFBvcG92ZXJDb250ZW50KCkpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIGlubGluZSBwb3BvdmVyIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyVGl0bGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKClcbiAgICApLmdldEhlbHBQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpKS5nZXRIaW50VGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhYmVsIHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKSkuZ2V0TGFiZWxUZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgY2FsY3VsYXRvciBJRC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTZWxlY3RlZENhbGN1bGF0b3IoKTogUHJvbWlzZTxTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQ+IHtcbiAgICBjb25zdCBjYWxjdWxhdG9ySWRIYXJuZXNzID0gYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKCk7XG4gICAgY29uc3Qgc2VsZWN0RWwgPSBhd2FpdCBjYWxjdWxhdG9ySWRIYXJuZXNzLnF1ZXJ5U2VsZWN0b3IoJ3NlbGVjdCcpO1xuICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgc2VsZWN0RWw/LmdldFByb3BlcnR5KCd2YWx1ZScpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHNhZmV0eSBjaGVjayAqL1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjYWxjdWxhdG9yIHNlbGVjdGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiArdmFsdWUgYXMgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YXJ0IGRhdGUgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U3RhcnREYXRlVmFsdWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmlzU3RhcnREYXRlVmlzaWJsZSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIGdldCBzdGFydCBkYXRlLiBTdGFydCBkYXRlcGlja2VyIGlzIG5vdCB2aXNpYmxlLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZXBpY2tlcigpKS5nZXRDb250cm9sKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaW5wdXQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGRhdGUgcmFuZ2UgcGlja2VyIGVuZCBkYXRlIGJlZm9yZSBzdGFydCBkYXRlIGVycm9yIGlzIHRocm93bi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbmREYXRlQmVmb3JlU3RhcnREYXRlRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpXG4gICAgKS5oYXNDdXN0b21Gb3JtRXJyb3IoJ2VuZERhdGVCZWZvcmVTdGFydERhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuZCBkYXRlIGlucHV0IGhhcyByZXF1aXJlZCBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbmREYXRlUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEVuZERhdGVJbnB1dEJveEhhcm5lc3MoKSkuaGFzUmVxdWlyZWRFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjdXN0b20gZXJyb3IgaGFzIGZpcmVkLlxuICAgKiBAcGFyYW1zIGVycm9yTmFtZSBgZXJyb3JOYW1lYCBwcm9wZXJ0eSBvZiB0aGUgY3VzdG9tIGBza3ktZm9ybS1lcnJvcmAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKClcbiAgICApLmhhc0N1c3RvbUZvcm1FcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc3RhcnQgZGF0ZSBpbnB1dCBoYXMgcmVxdWlyZWQgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzU3RhcnREYXRlUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZUlucHV0Qm94SGFybmVzcygpKS5oYXNSZXF1aXJlZEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKSkuZ2V0RGlzYWJsZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuZCBkYXRlIGRhdGVwaWNrZXIgaXMgdmlzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0VuZERhdGVWaXNpYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhKGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZScpKClcbiAgICApLmdldFByb3BlcnR5KCdoaWRkZW4nKSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgaGFzIHN0YWNrZWQgZW5hYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1N0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkuaGFzQ2xhc3MoJ3NreS1mb3JtLWZpZWxkLXN0YWNrZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHN0YXJ0IGRhdGUgZGF0ZXBpY2tlciBpcyB2aXNpYmxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzU3RhcnREYXRlVmlzaWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gIShhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoJy5za3ktZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZScpKClcbiAgICApLmdldFByb3BlcnR5KCdoaWRkZW4nKSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgc3BlY2lmaWVkIGNhbGN1bGF0b3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VsZWN0Q2FsY3VsYXRvcihcbiAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VsZWN0ID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgJ3NlbGVjdFtGb3JtQ29udHJvbE5hbWU9XCJjYWxjdWxhdG9ySWRcIl0nLFxuICAgICkoKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBzZWxlY3QuZ2V0UHJvcGVydHkoJ29wdGlvbnMnKTtcblxuICAgIGxldCBvcHRpb25JbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLy8gRmluZCB0aGUgaW5kZXggb2YgdGhlIG9wdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW2ldO1xuXG4gICAgICBpZiAoYCR7b3B0aW9uLnZhbHVlfWAgPT09IGAke2NhbGN1bGF0b3JJZH1gKSB7XG4gICAgICAgIG9wdGlvbkluZGV4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgY2FsY3VsYXRvciB3aXRoIElEICR7Y2FsY3VsYXRvcklkfS5gKTtcbiAgICB9XG5cbiAgICBhd2FpdCBzZWxlY3Quc2VsZWN0T3B0aW9ucyhvcHRpb25JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW5kIGRhdGUuXG4gICAqIEBwYXJhbSBuZXdEYXRlIGRhdGUgaW5wdXQgYXMgYSBmb3JtYXR0ZWQgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldEVuZERhdGVWYWx1ZShuZXdEYXRlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmlzRW5kRGF0ZVZpc2libGUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHNldCBlbmQgZGF0ZS4gRW5kIGRhdGVwaWNrZXIgaXMgbm90IHZpc2libGUuJyk7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEVuZERhdGVwaWNrZXIoKSkuZ2V0Q29udHJvbCgpO1xuICAgIGF3YWl0IGlucHV0LnNldFZhbHVlKG5ld0RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUuXG4gICAqIEBwYXJhbSBuZXdEYXRlIGRhdGUgaW5wdXQgYXMgYSBmb3JtYXR0ZWQgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldFN0YXJ0RGF0ZVZhbHVlKG5ld0RhdGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghKGF3YWl0IHRoaXMuaXNFbmREYXRlVmlzaWJsZSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIHNldCBzdGFydCBkYXRlLiBTdGFydCBkYXRlcGlja2VyIGlzIG5vdCB2aXNpYmxlLicsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRTdGFydERhdGVwaWNrZXIoKSkuZ2V0Q29udHJvbCgpO1xuICAgIGF3YWl0IGlucHV0LnNldFZhbHVlKG5ld0RhdGUpO1xuICB9XG5cbiAgYXN5bmMgI2dldEVuZERhdGVwaWNrZXIoKTogUHJvbWlzZTxTa3lEYXRlcGlja2VySGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRFbmREYXRlSW5wdXRCb3hIYXJuZXNzKClcbiAgICApLnF1ZXJ5SGFybmVzcyhTa3lEYXRlcGlja2VySGFybmVzcyk7XG4gIH1cblxuICBhc3luYyAjZ2V0U3RhcnREYXRlcGlja2VyKCk6IFByb21pc2U8U2t5RGF0ZXBpY2tlckhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0U3RhcnREYXRlSW5wdXRCb3hIYXJuZXNzKClcbiAgICApLnF1ZXJ5SGFybmVzcyhTa3lEYXRlcGlja2VySGFybmVzcyk7XG4gIH1cbn1cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS90ZXN0aW5nL3NyYy9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0lBQ2hFOztPQUVHO2FBQ1csaUJBQVksR0FBRyx1QkFBdUIsQ0FBQztJQUVyRCw0QkFBNEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUM1QyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDdEIsUUFBUSxFQUFFLG1DQUFtQztLQUM5QyxDQUFDLENBQ0gsQ0FBQztJQUNGLDBCQUEwQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQzFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUN0QixRQUFRLEVBQUUsaUNBQWlDO0tBQzVDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDL0Msa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ3RCLFFBQVEsRUFBRSwwQ0FBMEM7S0FDckQsQ0FBQyxDQUNILENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFrQztRQUVsQyxPQUFPLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0s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LENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE9BQU8saUNBQWlDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFlO1FBQzNDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPLG1DQUFtQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE9BQU8sTUFBTSxDQUNYLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQ3hDLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsT0FBTyxNQUFNLENBQ1gsTUFBTSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FDMUMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCB9IGZyb20gJ0Bza3l1eC9kYXRldGltZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvZm9ybXMvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJIYXJuZXNzIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJGaWx0ZXJzIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1oYXJuZXNzLmZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggZGF0ZSByYW5nZSBwaWNrZXIgY29tcG9uZW50cyBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreURhdGVSYW5nZVBpY2tlckhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyJztcblxuICAjZ2V0U3RhcnREYXRlSW5wdXRCb3hIYXJuZXNzID0gdGhpcy5sb2NhdG9yRm9yKFxuICAgIFNreUlucHV0Qm94SGFybmVzcy53aXRoKHtcbiAgICAgIGFuY2VzdG9yOiAnLnNreS1kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlJyxcbiAgICB9KSxcbiAgKTtcbiAgI2dldEVuZERhdGVJbnB1dEJveEhhcm5lc3MgPSB0aGlzLmxvY2F0b3JGb3IoXG4gICAgU2t5SW5wdXRCb3hIYXJuZXNzLndpdGgoe1xuICAgICAgYW5jZXN0b3I6ICcuc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWVuZC1kYXRlJyxcbiAgICB9KSxcbiAgKTtcbiAgI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcyA9IHRoaXMubG9jYXRvckZvcihcbiAgICBTa3lJbnB1dEJveEhhcm5lc3Mud2l0aCh7XG4gICAgICBhbmNlc3RvcjogJy5za3ktZGF0ZS1yYW5nZS1waWNrZXItc2VsZWN0LWNhbGN1bGF0b3InLFxuICAgIH0pLFxuICApO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lEYXRlUmFuZ2VQaWNrZXJIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5RGF0ZVJhbmdlUGlja2VyRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lEYXRlUmFuZ2VQaWNrZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreURhdGVSYW5nZVBpY2tlckhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKCkpLmNsaWNrSGVscElubGluZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVuZCBkYXRlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEVuZERhdGVWYWx1ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGF3YWl0IHRoaXMuI2Fzc2VydEVuZERhdGVWaXNpYmxlKCdVbmFibGUgdG8gZ2V0IGVuZCBkYXRlLicpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0RW5kRGF0ZXBpY2tlcigpKS5nZXRDb250cm9sKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaW5wdXQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpXG4gICAgKS5nZXRIZWxwUG9wb3ZlckNvbnRlbnQoKSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgaW5saW5lIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKVxuICAgICkuZ2V0SGVscFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhpbnQgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIaW50VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKCkpLmdldEhpbnRUZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbGFiZWwgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpKS5nZXRMYWJlbFRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWxlY3RlZCBjYWxjdWxhdG9yIElELlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNlbGVjdGVkQ2FsY3VsYXRvcigpOiBQcm9taXNlPFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZD4ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JJZEhhcm5lc3MgPSBhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKTtcbiAgICBjb25zdCBzZWxlY3RFbCA9IGF3YWl0IGNhbGN1bGF0b3JJZEhhcm5lc3MucXVlcnlTZWxlY3Rvcignc2VsZWN0Jyk7XG4gICAgY29uc3QgdmFsdWUgPSBhd2FpdCBzZWxlY3RFbD8uZ2V0UHJvcGVydHkoJ3ZhbHVlJyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2FmZXR5IGNoZWNrICovXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNhbGN1bGF0b3Igc2VsZWN0ZWQuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICt2YWx1ZSBhcyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RhcnQgZGF0ZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTdGFydERhdGVWYWx1ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGF3YWl0IHRoaXMuI2Fzc2VydFN0YXJ0RGF0ZVZpc2libGUoJ1VuYWJsZSB0byBnZXQgc3RhcnQgZGF0ZS4nKTtcblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZXBpY2tlcigpKS5nZXRDb250cm9sKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaW5wdXQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGRhdGUgcmFuZ2UgcGlja2VyIGVuZCBkYXRlIGJlZm9yZSBzdGFydCBkYXRlIGVycm9yIGlzIHRocm93bi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbmREYXRlQmVmb3JlU3RhcnREYXRlRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpXG4gICAgKS5oYXNDdXN0b21Gb3JtRXJyb3IoJ2VuZERhdGVCZWZvcmVTdGFydERhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuZCBkYXRlIGlucHV0IGhhcyByZXF1aXJlZCBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbmREYXRlUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEVuZERhdGVJbnB1dEJveEhhcm5lc3MoKSkuaGFzUmVxdWlyZWRFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjdXN0b20gZXJyb3IgaGFzIGZpcmVkLlxuICAgKiBAcGFyYW1zIGVycm9yTmFtZSBgZXJyb3JOYW1lYCBwcm9wZXJ0eSBvZiB0aGUgY3VzdG9tIGBza3ktZm9ybS1lcnJvcmAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKClcbiAgICApLmhhc0N1c3RvbUZvcm1FcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc3RhcnQgZGF0ZSBpbnB1dCBoYXMgcmVxdWlyZWQgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzU3RhcnREYXRlUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZUlucHV0Qm94SGFybmVzcygpKS5oYXNSZXF1aXJlZEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKSkuZ2V0RGlzYWJsZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuZCBkYXRlIGRhdGVwaWNrZXIgaXMgdmlzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0VuZERhdGVWaXNpYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGhpZGRlbiA9IGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZScpKClcbiAgICApLmdldFByb3BlcnR5PGJvb2xlYW4+KCdoaWRkZW4nKTtcblxuICAgIHJldHVybiAhaGlkZGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGhhcyBzdGFja2VkIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNTdGFja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmhhc0NsYXNzKCdza3ktZm9ybS1maWVsZC1zdGFja2VkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBzdGFydCBkYXRlIGRhdGVwaWNrZXIgaXMgdmlzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1N0YXJ0RGF0ZVZpc2libGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaGlkZGVuID0gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWRhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUnKSgpXG4gICAgKS5nZXRQcm9wZXJ0eTxib29sZWFuPignaGlkZGVuJyk7XG5cbiAgICByZXR1cm4gIWhpZGRlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBzcGVjaWZpZWQgY2FsY3VsYXRvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZWxlY3RDYWxjdWxhdG9yKFxuICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoXG4gICAgICAnc2VsZWN0W0Zvcm1Db250cm9sTmFtZT1cImNhbGN1bGF0b3JJZFwiXScsXG4gICAgKSgpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHNlbGVjdC5nZXRQcm9wZXJ0eSgnb3B0aW9ucycpO1xuXG4gICAgbGV0IG9wdGlvbkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG5cbiAgICAgIGlmIChgJHtvcHRpb24udmFsdWV9YCA9PT0gYCR7Y2FsY3VsYXRvcklkfWApIHtcbiAgICAgICAgb3B0aW9uSW5kZXggPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9uSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBjYWxjdWxhdG9yIHdpdGggSUQgJHtjYWxjdWxhdG9ySWR9LmApO1xuICAgIH1cblxuICAgIGF3YWl0IHNlbGVjdC5zZWxlY3RPcHRpb25zKG9wdGlvbkluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbmQgZGF0ZS5cbiAgICogQHBhcmFtIG5ld0RhdGUgZGF0ZSBpbnB1dCBhcyBhIGZvcm1hdHRlZCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0RW5kRGF0ZVZhbHVlKG5ld0RhdGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI2Fzc2VydEVuZERhdGVWaXNpYmxlKCdVbmFibGUgdG8gc2V0IGVuZCBkYXRlLicpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0RW5kRGF0ZXBpY2tlcigpKS5nZXRDb250cm9sKCk7XG5cbiAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZShuZXdEYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlLlxuICAgKiBAcGFyYW0gbmV3RGF0ZSBkYXRlIGlucHV0IGFzIGEgZm9ybWF0dGVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRTdGFydERhdGVWYWx1ZShuZXdEYXRlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLiNhc3NlcnRTdGFydERhdGVWaXNpYmxlKCdVbmFibGUgdG8gc2V0IHN0YXJ0IGRhdGUuJyk7XG5cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRTdGFydERhdGVwaWNrZXIoKSkuZ2V0Q29udHJvbCgpO1xuXG4gICAgYXdhaXQgaW5wdXQuc2V0VmFsdWUobmV3RGF0ZSk7XG4gIH1cblxuICBhc3luYyAjYXNzZXJ0RW5kRGF0ZVZpc2libGUobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5pc0VuZERhdGVWaXNpYmxlKCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bWVzc2FnZX0gRW5kIGRhdGVwaWNrZXIgaXMgbm90IHZpc2libGUuYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgI2Fzc2VydFN0YXJ0RGF0ZVZpc2libGUobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5pc1N0YXJ0RGF0ZVZpc2libGUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHttZXNzYWdlfSBTdGFydCBkYXRlcGlja2VyIGlzIG5vdCB2aXNpYmxlLmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jICNnZXRFbmREYXRlcGlja2VyKCk6IFByb21pc2U8U2t5RGF0ZXBpY2tlckhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0RW5kRGF0ZUlucHV0Qm94SGFybmVzcygpXG4gICAgKS5xdWVyeUhhcm5lc3MoU2t5RGF0ZXBpY2tlckhhcm5lc3MpO1xuICB9XG5cbiAgYXN5bmMgI2dldFN0YXJ0RGF0ZXBpY2tlcigpOiBQcm9taXNlPFNreURhdGVwaWNrZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZUlucHV0Qm94SGFybmVzcygpXG4gICAgKS5xdWVyeUhhcm5lc3MoU2t5RGF0ZXBpY2tlckhhcm5lc3MpO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { SkyComponentHarness } from '@skyux/core/testing';
2
2
  import { SkyDatepickerCalendarHarness } from './datepicker-calendar-harness';
3
3
  import { SkyDatepickerInputHarness } from './datepicker-input-harness';
4
+ import { SkyFuzzyDatepickerInputHarness } from './fuzzy-datepicker-input-harness';
4
5
  /**
5
6
  * Harness for interacting with datepicker components in tests.
6
7
  */
@@ -44,7 +45,7 @@ export class SkyDatepickerHarness extends SkyComponentHarness {
44
45
  * Gets the datepicker input harness.
45
46
  */
46
47
  async getControl() {
47
- return await this.locatorFor(SkyDatepickerInputHarness)();
48
+ return await this.locatorFor(SkyDatepickerInputHarness, SkyFuzzyDatepickerInputHarness)();
48
49
  }
49
50
  /**
50
51
  * Whether the datepicker calendar picker is open.
@@ -56,4 +57,4 @@ export class SkyDatepickerHarness extends SkyComponentHarness {
56
57
  return await (await this.#getCalendarButton()).getAttribute('aria-controls');
57
58
  }
58
59
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQzNEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxrQ0FBa0MsQ0FBQztJQUVoRSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUV6RCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFFeEU7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUE2QjtRQUU3QixPQUFPLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELENBQzFELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQy9DLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FDbEUsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsT0FBTyxDQUNMLENBQUMsTUFBTSxDQUNMLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQ2hDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsT0FBTyxNQUFNLENBQ1gsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FDaEMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckhhcm5lc3MgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRmlsdGVycyB9IGZyb20gJy4vZGF0ZXBpY2tlci1oYXJuZXNzLmZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlcklucHV0SGFybmVzcyB9IGZyb20gJy4vZGF0ZXBpY2tlci1pbnB1dC1oYXJuZXNzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGRhdGVwaWNrZXIgY29tcG9uZW50cyBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1kYXRlcGlja2VyLCAuc2t5LWlucHV0LWdyb3VwJztcblxuICAjZG9jdW1lbnRSb290TG9jYXRvciA9IHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKTtcblxuICAjZ2V0Q2FsZW5kYXJCdXR0b24gPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktaW5wdXQtZ3JvdXAtZGF0ZXBpY2tlci1idG4nKTtcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5RGF0ZXBpY2tlckhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICpcbiAgICogVGhlc2UgZmlsdGVycyBvbmx5IHdvcmsgZm9yIHN0YW5kYWxvbmUgZGF0ZXBpY2tlcnMuIEZvciBkYXRlcGlja2Vyc1xuICAgKiB3cmFwcGVkIGluc2lkZSBgc2t5LWlucHV0LWJveGAsIHBsYWNlIGZpbHRlcnMgb24gdGhlIGlucHV0IGJveCBpbnN0ZWFkIGFuZFxuICAgKiBxdWVyeSB0aGUgZGF0ZXBpY2tlciB1c2luZyBhIGBTa3lJbnB1dEJveEhhcm5lc3NgLlxuICAgKiBGb3IgdGhlIGlucHV0IGJveCBpbXBsZW1lbnRhdGlvbiwgc2VlIHRoZSBjb2RlIGV4YW1wbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5RGF0ZXBpY2tlckZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5RGF0ZXBpY2tlckhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5RGF0ZXBpY2tlckhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgY2FsZW5kYXIgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrQ2FsZW5kYXJCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDYWxlbmRhckJ1dHRvbigpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGBTa3lEYXRlcGlja2VyQ2FsZW5kYXJIYXJuZXNzYCBmb3IgdGhlIGNhbGVuZGFyIHBpY2tlciBjb250cm9sbGVkIGJ5XG4gICAqIHRoZSBkYXRlcGlja2VyLiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNhbGVuZGFyIHBpY2tlciBpcyBub3Qgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXREYXRlcGlja2VyQ2FsZW5kYXIoKTogUHJvbWlzZTxTa3lEYXRlcGlja2VyQ2FsZW5kYXJIYXJuZXNzPiB7XG4gICAgY29uc3QgY2FsZW5kYXJJZCA9IGF3YWl0IHRoaXMuI2dldEFyaWFDb250cm9scygpO1xuXG4gICAgaWYgKCFjYWxlbmRhcklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZ2V0IGNhbGVuZGFyIHBpY2tlciBiZWNhdXNlIHBpY2tlciBpcyBjbG9zZWQuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2RvY3VtZW50Um9vdExvY2F0b3IubG9jYXRvckZvcihcbiAgICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiBgIyR7Y2FsZW5kYXJJZH1gIH0pLFxuICAgICkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkYXRlcGlja2VyIGlucHV0IGhhcm5lc3MuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q29udHJvbCgpOiBQcm9taXNlPFNreURhdGVwaWNrZXJJbnB1dEhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFNreURhdGVwaWNrZXJJbnB1dEhhcm5lc3MpKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZXBpY2tlciBjYWxlbmRhciBwaWNrZXIgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0RhdGVwaWNrZXJPcGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoXG4gICAgICAoYXdhaXQgKFxuICAgICAgICBhd2FpdCB0aGlzLiNnZXRDYWxlbmRhckJ1dHRvbigpXG4gICAgICApLmdldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpKSA9PT0gJ3RydWUnXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRBcmlhQ29udHJvbHMoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGVuZGFyQnV0dG9uKClcbiAgICApLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICB9XG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQzNEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxrQ0FBa0MsQ0FBQztJQUVoRSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUV6RCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFFeEU7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUE2QjtRQUU3QixPQUFPLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELENBQzFELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQy9DLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FDbEUsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFHckIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQzFCLHlCQUF5QixFQUN6Qiw4QkFBOEIsQ0FDL0IsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixPQUFPLENBQ0wsQ0FBQyxNQUFNLENBQ0wsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FDaEMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQzVDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixPQUFPLE1BQU0sQ0FDWCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUNoQyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzcyB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1oYXJuZXNzJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJGaWx0ZXJzIH0gZnJvbSAnLi9kYXRlcGlja2VyLWhhcm5lc3MuZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VySW5wdXRIYXJuZXNzIH0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0LWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5RnV6enlEYXRlcGlja2VySW5wdXRIYXJuZXNzIH0gZnJvbSAnLi9mdXp6eS1kYXRlcGlja2VyLWlucHV0LWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggZGF0ZXBpY2tlciBjb21wb25lbnRzIGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LWRhdGVwaWNrZXIsIC5za3ktaW5wdXQtZ3JvdXAnO1xuXG4gICNkb2N1bWVudFJvb3RMb2NhdG9yID0gdGhpcy5kb2N1bWVudFJvb3RMb2NhdG9yRmFjdG9yeSgpO1xuXG4gICNnZXRDYWxlbmRhckJ1dHRvbiA9IHRoaXMubG9jYXRvckZvcignLnNreS1pbnB1dC1ncm91cC1kYXRlcGlja2VyLWJ0bicpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lEYXRlcGlja2VySGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKlxuICAgKiBUaGVzZSBmaWx0ZXJzIG9ubHkgd29yayBmb3Igc3RhbmRhbG9uZSBkYXRlcGlja2Vycy4gRm9yIGRhdGVwaWNrZXJzXG4gICAqIHdyYXBwZWQgaW5zaWRlIGBza3ktaW5wdXQtYm94YCwgcGxhY2UgZmlsdGVycyBvbiB0aGUgaW5wdXQgYm94IGluc3RlYWQgYW5kXG4gICAqIHF1ZXJ5IHRoZSBkYXRlcGlja2VyIHVzaW5nIGEgYFNreUlucHV0Qm94SGFybmVzc2AuXG4gICAqIEZvciB0aGUgaW5wdXQgYm94IGltcGxlbWVudGF0aW9uLCBzZWUgdGhlIGNvZGUgZXhhbXBsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lEYXRlcGlja2VyRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lEYXRlcGlja2VySGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lEYXRlcGlja2VySGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBjYWxlbmRhciBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tDYWxlbmRhckJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldENhbGVuZGFyQnV0dG9uKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYFNreURhdGVwaWNrZXJDYWxlbmRhckhhcm5lc3NgIGZvciB0aGUgY2FsZW5kYXIgcGlja2VyIGNvbnRyb2xsZWQgYnlcbiAgICogdGhlIGRhdGVwaWNrZXIuIFRocm93cyBhbiBlcnJvciBpZiB0aGUgY2FsZW5kYXIgcGlja2VyIGlzIG5vdCBvcGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldERhdGVwaWNrZXJDYWxlbmRhcigpOiBQcm9taXNlPFNreURhdGVwaWNrZXJDYWxlbmRhckhhcm5lc3M+IHtcbiAgICBjb25zdCBjYWxlbmRhcklkID0gYXdhaXQgdGhpcy4jZ2V0QXJpYUNvbnRyb2xzKCk7XG5cbiAgICBpZiAoIWNhbGVuZGFySWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuYWJsZSB0byBnZXQgY2FsZW5kYXIgcGlja2VyIGJlY2F1c2UgcGlja2VyIGlzIGNsb3NlZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jZG9jdW1lbnRSb290TG9jYXRvci5sb2NhdG9yRm9yKFxuICAgICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGAjJHtjYWxlbmRhcklkfWAgfSksXG4gICAgKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRhdGVwaWNrZXIgaW5wdXQgaGFybmVzcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDb250cm9sKCk6IFByb21pc2U8XG4gICAgU2t5RGF0ZXBpY2tlcklucHV0SGFybmVzcyB8IFNreUZ1enp5RGF0ZXBpY2tlcklucHV0SGFybmVzc1xuICA+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgU2t5RGF0ZXBpY2tlcklucHV0SGFybmVzcyxcbiAgICAgIFNreUZ1enp5RGF0ZXBpY2tlcklucHV0SGFybmVzcyxcbiAgICApKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZXBpY2tlciBjYWxlbmRhciBwaWNrZXIgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0RhdGVwaWNrZXJPcGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoXG4gICAgICAoYXdhaXQgKFxuICAgICAgICBhd2FpdCB0aGlzLiNnZXRDYWxlbmRhckJ1dHRvbigpXG4gICAgICApLmdldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpKSA9PT0gJ3RydWUnXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRBcmlhQ29udHJvbHMoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGVuZGFyQnV0dG9uKClcbiAgICApLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { SkyInputHarness } from '@skyux/core/testing';
2
+ /**
3
+ * Harness to interact with the fuzzy datepicker input harness.
4
+ */
5
+ export class SkyFuzzyDatepickerInputHarness extends SkyInputHarness {
6
+ /**
7
+ * @internal
8
+ */
9
+ static { this.hostSelector = '[skyFuzzyDatepickerInput]'; }
10
+ /**
11
+ * Blurs the input.
12
+ */
13
+ async blur() {
14
+ await super.blur();
15
+ const host = await this.host();
16
+ await host.dispatchEvent('focusout', {
17
+ relatedTarget: null,
18
+ });
19
+ }
20
+ /**
21
+ * Sets the value of the input.
22
+ */
23
+ async setValue(value) {
24
+ await super.setValue(value);
25
+ await (await this.host()).dispatchEvent('change');
26
+ await this.blur();
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZXBpY2tlci1pbnB1dC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZGF0ZXBpY2tlci9mdXp6eS1kYXRlcGlja2VyLWlucHV0LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXREOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDhCQUErQixTQUFRLGVBQWU7SUFDakU7O09BRUc7YUFDVyxpQkFBWSxHQUFHLDJCQUEyQixDQUFDO0lBRXpEOztPQUVHO0lBQ2EsS0FBSyxDQUFDLElBQUk7UUFDeEIsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0IsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtZQUNuQyxhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWE7UUFDMUMsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVCLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SW5wdXRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbi8qKlxuICogSGFybmVzcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBmdXp6eSBkYXRlcGlja2VyIGlucHV0IGhhcm5lc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dEhhcm5lc3MgZXh0ZW5kcyBTa3lJbnB1dEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdbc2t5RnV6enlEYXRlcGlja2VySW5wdXRdJztcblxuICAvKipcbiAgICogQmx1cnMgdGhlIGlucHV0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGJsdXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuYmx1cigpO1xuXG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuXG4gICAgYXdhaXQgaG9zdC5kaXNwYXRjaEV2ZW50KCdmb2N1c291dCcsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5zZXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmRpc3BhdGNoRXZlbnQoJ2NoYW5nZScpO1xuICAgIGF3YWl0IHRoaXMuYmx1cigpO1xuICB9XG59XG4iXX0=
@@ -222,6 +222,34 @@ class SkyDatepickerInputHarness extends SkyInputHarness {
222
222
  }
223
223
  }
224
224
 
225
+ /**
226
+ * Harness to interact with the fuzzy datepicker input harness.
227
+ */
228
+ class SkyFuzzyDatepickerInputHarness extends SkyInputHarness {
229
+ /**
230
+ * @internal
231
+ */
232
+ static { this.hostSelector = '[skyFuzzyDatepickerInput]'; }
233
+ /**
234
+ * Blurs the input.
235
+ */
236
+ async blur() {
237
+ await super.blur();
238
+ const host = await this.host();
239
+ await host.dispatchEvent('focusout', {
240
+ relatedTarget: null,
241
+ });
242
+ }
243
+ /**
244
+ * Sets the value of the input.
245
+ */
246
+ async setValue(value) {
247
+ await super.setValue(value);
248
+ await (await this.host()).dispatchEvent('change');
249
+ await this.blur();
250
+ }
251
+ }
252
+
225
253
  /**
226
254
  * Harness for interacting with datepicker components in tests.
227
255
  */
@@ -265,7 +293,7 @@ class SkyDatepickerHarness extends SkyComponentHarness {
265
293
  * Gets the datepicker input harness.
266
294
  */
267
295
  async getControl() {
268
- return await this.locatorFor(SkyDatepickerInputHarness)();
296
+ return await this.locatorFor(SkyDatepickerInputHarness, SkyFuzzyDatepickerInputHarness)();
269
297
  }
270
298
  /**
271
299
  * Whether the datepicker calendar picker is open.
@@ -312,9 +340,7 @@ class SkyDateRangePickerHarness extends SkyComponentHarness {
312
340
  * Gets the end date value.
313
341
  */
314
342
  async getEndDateValue() {
315
- if (!(await this.isEndDateVisible())) {
316
- throw new Error('Unable to get end date. End datepicker is not visible.');
317
- }
343
+ await this.#assertEndDateVisible('Unable to get end date.');
318
344
  const input = await (await this.#getEndDatepicker()).getControl();
319
345
  return await input.getValue();
320
346
  }
@@ -359,9 +385,7 @@ class SkyDateRangePickerHarness extends SkyComponentHarness {
359
385
  * Gets the start date value.
360
386
  */
361
387
  async getStartDateValue() {
362
- if (!(await this.isStartDateVisible())) {
363
- throw new Error('Unable to get start date. Start datepicker is not visible.');
364
- }
388
+ await this.#assertStartDateVisible('Unable to get start date.');
365
389
  const input = await (await this.#getStartDatepicker()).getControl();
366
390
  return await input.getValue();
367
391
  }
@@ -400,7 +424,8 @@ class SkyDateRangePickerHarness extends SkyComponentHarness {
400
424
  * Whether end date datepicker is visible.
401
425
  */
402
426
  async isEndDateVisible() {
403
- return !(await (await this.locatorFor('.sky-date-range-picker-end-date')()).getProperty('hidden'));
427
+ const hidden = await (await this.locatorFor('.sky-date-range-picker-end-date')()).getProperty('hidden');
428
+ return !hidden;
404
429
  }
405
430
  /**
406
431
  * Whether the date range picker has stacked enabled.
@@ -412,7 +437,8 @@ class SkyDateRangePickerHarness extends SkyComponentHarness {
412
437
  * Whether start date datepicker is visible.
413
438
  */
414
439
  async isStartDateVisible() {
415
- return !(await (await this.locatorFor('.sky-date-range-picker-start-date')()).getProperty('hidden'));
440
+ const hidden = await (await this.locatorFor('.sky-date-range-picker-start-date')()).getProperty('hidden');
441
+ return !hidden;
416
442
  }
417
443
  /**
418
444
  * Selects the specified calculator.
@@ -439,9 +465,7 @@ class SkyDateRangePickerHarness extends SkyComponentHarness {
439
465
  * @param newDate date input as a formatted string.
440
466
  */
441
467
  async setEndDateValue(newDate) {
442
- if (!(await this.isEndDateVisible())) {
443
- throw new Error('Unable to set end date. End datepicker is not visible.');
444
- }
468
+ await this.#assertEndDateVisible('Unable to set end date.');
445
469
  const input = await (await this.#getEndDatepicker()).getControl();
446
470
  await input.setValue(newDate);
447
471
  }
@@ -450,12 +474,20 @@ class SkyDateRangePickerHarness extends SkyComponentHarness {
450
474
  * @param newDate date input as a formatted string.
451
475
  */
452
476
  async setStartDateValue(newDate) {
453
- if (!(await this.isEndDateVisible())) {
454
- throw new Error('Unable to set start date. Start datepicker is not visible.');
455
- }
477
+ await this.#assertStartDateVisible('Unable to set start date.');
456
478
  const input = await (await this.#getStartDatepicker()).getControl();
457
479
  await input.setValue(newDate);
458
480
  }
481
+ async #assertEndDateVisible(message) {
482
+ if (!(await this.isEndDateVisible())) {
483
+ throw new Error(`${message} End datepicker is not visible.`);
484
+ }
485
+ }
486
+ async #assertStartDateVisible(message) {
487
+ if (!(await this.isStartDateVisible())) {
488
+ throw new Error(`${message} Start datepicker is not visible.`);
489
+ }
490
+ }
459
491
  async #getEndDatepicker() {
460
492
  return await (await this.#getEndDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
461
493
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-datetime-testing.mjs","sources":["../../../../../libs/components/datetime/testing/src/legacy/datepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/legacy/timepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/datepicker-calendar-harness.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/datepicker-input-harness.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/datepicker-harness.ts","../../../../../libs/components/datetime/testing/src/modules/date-range-picker/date-range-picker-harness.ts","../../../../../libs/components/datetime/testing/src/skyux-datetime-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX datepicker component.\n * @deprecated Use `SkyDatepickerHarness` instead.\n * @internal\n */\nexport class SkyDatepickerFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-datepicker',\n );\n }\n\n /**\n * The datepicker's currently selected date.\n */\n public get date(): string {\n return this.#getDatepickerInputEl().nativeElement.value;\n }\n\n /**\n * Flag indicating if datepicker input is disabled.\n */\n public get disabled(): boolean {\n return this.#getDatepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * The datepicker's calendar element.\n */\n public get calendarEl(): any {\n const button = this.#debugEl.query(\n By.css('.sky-datepicker .sky-input-group-datepicker-btn'),\n ).nativeElement;\n\n const calendarId = button.getAttribute('aria-controls');\n if (!calendarId) {\n return null;\n }\n\n return document.getElementById(calendarId);\n }\n\n /**\n * Click the calendar button to open or close calendar.\n */\n public clickDatepickerCalenderButtonEl(): void {\n this.#debugEl\n .query(By.css('.sky-datepicker .sky-input-group-datepicker-btn'))\n .nativeElement.click();\n }\n\n public clickDayEl(dayIndex: number): void {\n const dayEls = this.calendarEl.querySelectorAll('.sky-datepicker-btn-date');\n\n const dayEl = dayEls[dayIndex];\n\n if (!dayEl) {\n throw new Error(`No day exists at index ${dayIndex}.`);\n }\n\n dayEl.click();\n }\n\n #getDatepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-datepicker input'));\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX timepicker component.\n * @internal\n */\nexport class SkyTimepickerFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-timepicker',\n );\n }\n\n /**\n * The timepicker's currently selected time.\n */\n public get value(): string {\n return this.#getTimepickerInputEl().nativeElement.value;\n }\n\n /**\n * Set the timepicker's selected time.\n */\n public set value(value: string) {\n const timepickerInputEl = this.#getTimepickerInputEl().nativeElement;\n timepickerInputEl.value = value;\n this.#fixture.detectChanges();\n\n SkyAppTestUtility.fireDomEvent(timepickerInputEl, 'change');\n this.#fixture.detectChanges();\n }\n\n /**\n * Flag indicating if timepicker input is disabled.\n */\n public get isDisabled(): boolean {\n return this.#getTimepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * Set the timepicker's disabled value\n */\n public set isDisabled(value: boolean) {\n this.#getTimepickerInputEl().nativeElement.disabled = value;\n }\n\n /**\n * Flag indicating if timepicker input is valid.\n */\n public get isValid(): boolean {\n return !this.#getTimepickerInputEl().nativeElement.classList.contains(\n 'ng-invalid',\n );\n }\n\n #getTimepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-timepicker input'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarnessFilters } from './datepicker-calendar-harness.filters';\n\n/**\n * Harness for interacting with datepicker calendar in tests.\n */\nexport class SkyDatepickerCalendarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-datepicker-calendar-container';\n\n #getDaypicker = this.locatorForOptional('sky-daypicker');\n #getMonthpicker = this.locatorForOptional('sky-monthpicker');\n #getNextButton = this.locatorFor('.sky-datepicker-btn-next');\n #getPreviousButton = this.locatorFor('.sky-datepicker-btn-previous');\n #getSelected = this.locatorFor('.sky-datepicker-btn-selected');\n #getTitle = this.locatorFor('.sky-datepicker-calendar-title');\n #getTitleButton = this.locatorFor('.sky-datepicker-calendar-title');\n\n /**\n * @internal\n */\n public static with(\n filters: SkyDatepickerCalendarHarnessFilters,\n ): HarnessPredicate<SkyDatepickerCalendarHarness> {\n return new HarnessPredicate(SkyDatepickerCalendarHarness, filters);\n }\n\n /**\n * Clicks the specified date, month or year.\n * @params the specified value to click, in the following format\n * day format: dddd, MMMM Do YYYY\n * month format: MMMM YYYY\n * year format: YYYY\n */\n public async clickDate(date: string): Promise<void> {\n try {\n await (await this.locatorFor(`[aria-label=\"${date}\"]`)()).click();\n } catch {\n throw new Error(\n `Unable to find date with label \"${date}\". Check that the format is correct and matches the current calendar mode.`,\n );\n }\n }\n\n /**\n * Clicks the 'next' button on the calendar header.\n */\n public async clickNextButton(): Promise<void> {\n await (await this.#getNextButton()).click();\n }\n\n /**\n * Clicks the 'previous' button on the calendar header.\n */\n public async clickPreviousButton(): Promise<void> {\n await (await this.#getPreviousButton()).click();\n }\n\n /**\n * Clicks the 'title' button on the calendar header.\n */\n public async clickTitleButton(): Promise<void> {\n const button = await this.#getTitleButton();\n\n if (await button.hasClass('sky-btn-disabled')) {\n throw new Error('Title button is disabled.');\n }\n\n await button.click();\n }\n\n /**\n * Gets the current calendar mode.\n */\n public async getCalendarMode(): Promise<string> {\n if (await this.#getDaypicker()) {\n return 'day';\n } else if (await this.#getMonthpicker()) {\n return 'month';\n } else {\n return 'year';\n }\n }\n\n /**\n * Gets the current title.\n */\n public async getCalendarTitle(): Promise<string> {\n return (await (await this.#getTitle()).text()).trim();\n }\n\n /**\n * Gets the value of the currently selected calendar item.\n */\n public async getSelectedValue(): Promise<string | null> {\n return await (await this.#getSelected()).getAttribute('aria-label');\n }\n}\n","import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the datepicker input harness.\n */\nexport class SkyDatepickerInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = '[skyDatepickerInput]';\n\n /**\n * Blurs the input.\n */\n public override async blur(): Promise<void> {\n await super.blur();\n\n const host = await this.host();\n\n await host.dispatchEvent('focusout', {\n relatedTarget: null,\n });\n }\n\n /**\n * Sets the value of the input.\n */\n public override async setValue(value: string): Promise<void> {\n await super.setValue(value);\n\n await this.blur();\n await (await this.host()).dispatchEvent('change');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarness } from './datepicker-calendar-harness';\nimport { SkyDatepickerFilters } from './datepicker-harness.filters';\nimport { SkyDatepickerInputHarness } from './datepicker-input-harness';\n\n/**\n * Harness for interacting with datepicker components in tests.\n */\nexport class SkyDatepickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-datepicker, .sky-input-group';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getCalendarButton = this.locatorFor('.sky-input-group-datepicker-btn');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDatepickerHarness` that meets certain criteria.\n *\n * These filters only work for standalone datepickers. For datepickers\n * wrapped inside `sky-input-box`, place filters on the input box instead and\n * query the datepicker using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static with(\n filters: SkyDatepickerFilters,\n ): HarnessPredicate<SkyDatepickerHarness> {\n return SkyDatepickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the calendar button.\n */\n public async clickCalendarButton(): Promise<void> {\n return await (await this.#getCalendarButton()).click();\n }\n\n /**\n * Gets the `SkyDatepickerCalendarHarness` for the calendar picker controlled by\n * the datepicker. Throws an error if the calendar picker is not open.\n */\n public async getDatepickerCalendar(): Promise<SkyDatepickerCalendarHarness> {\n const calendarId = await this.#getAriaControls();\n\n if (!calendarId) {\n throw new Error(\n 'Unable to get calendar picker because picker is closed.',\n );\n }\n\n return await this.#documentRootLocator.locatorFor(\n SkyDatepickerCalendarHarness.with({ selector: `#${calendarId}` }),\n )();\n }\n\n /**\n * Gets the datepicker input harness.\n */\n public async getControl(): Promise<SkyDatepickerInputHarness> {\n return await this.locatorFor(SkyDatepickerInputHarness)();\n }\n\n /**\n * Whether the datepicker calendar picker is open.\n */\n public async isDatepickerOpen(): Promise<boolean> {\n return (\n (await (\n await this.#getCalendarButton()\n ).getAttribute('aria-expanded')) === 'true'\n );\n }\n\n async #getAriaControls(): Promise<string | null> {\n return await (\n await this.#getCalendarButton()\n ).getAttribute('aria-controls');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyDateRangeCalculatorId } from '@skyux/datetime';\nimport { SkyInputBoxHarness } from '@skyux/forms/testing';\n\nimport { SkyDatepickerHarness } from '../datepicker/datepicker-harness';\n\nimport { SkyDateRangePickerFilters } from './date-range-picker-harness.filters';\n\n/**\n * Harness for interacting with date range picker components in tests.\n */\nexport class SkyDateRangePickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-date-range-picker';\n\n #getStartDateInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-start-date',\n }),\n );\n #getEndDateInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-end-date',\n }),\n );\n #getCalculatorIdInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-select-calculator',\n }),\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDateRangePickerHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDateRangePickerFilters,\n ): HarnessPredicate<SkyDateRangePickerHarness> {\n return SkyDateRangePickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getCalculatorIdInputBoxHarness()).clickHelpInline();\n }\n\n /**\n * Gets the end date value.\n */\n public async getEndDateValue(): Promise<string> {\n if (!(await this.isEndDateVisible())) {\n throw new Error('Unable to get end date. End datepicker is not visible.');\n }\n\n const input = await (await this.#getEndDatepicker()).getControl();\n\n return await input.getValue();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return (await (\n await this.#getCalculatorIdInputBoxHarness()\n ).getHelpPopoverContent()) as string | undefined;\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).getHelpPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getHintText();\n }\n\n /**\n * Gets the label text.\n */\n public async getLabelText(): Promise<string> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getLabelText();\n }\n\n /**\n * Gets the selected calculator ID.\n */\n public async getSelectedCalculator(): Promise<SkyDateRangeCalculatorId> {\n const calculatorIdHarness = await this.#getCalculatorIdInputBoxHarness();\n const selectEl = await calculatorIdHarness.querySelector('select');\n const value = await selectEl?.getProperty('value');\n\n /* istanbul ignore next: safety check */\n if (value === undefined || value === '') {\n throw new Error('No calculator selected.');\n }\n\n return +value as SkyDateRangeCalculatorId;\n }\n\n /**\n * Gets the start date value.\n */\n public async getStartDateValue(): Promise<string> {\n if (!(await this.isStartDateVisible())) {\n throw new Error(\n 'Unable to get start date. Start datepicker is not visible.',\n );\n }\n\n const input = await (await this.#getStartDatepicker()).getControl();\n\n return await input.getValue();\n }\n\n /**\n * Whether date range picker end date before start date error is thrown.\n */\n public async hasEndDateBeforeStartDateError(): Promise<boolean> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).hasCustomFormError('endDateBeforeStartDate');\n }\n\n /**\n * Whether end date input has required error.\n */\n public async hasEndDateRequiredError(): Promise<boolean> {\n return await (await this.#getEndDateInputBoxHarness()).hasRequiredError();\n }\n\n /**\n * Whether a custom error has fired.\n * @params errorName `errorName` property of the custom `sky-form-error`.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).hasCustomFormError(errorName);\n }\n\n /**\n * Whether start date input has required error.\n */\n public async hasStartDateRequiredError(): Promise<boolean> {\n return await (await this.#getStartDateInputBoxHarness()).hasRequiredError();\n }\n\n /**\n * Whether the date range picker component is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getDisabled();\n }\n\n /**\n * Whether end date datepicker is visible.\n */\n public async isEndDateVisible(): Promise<boolean> {\n return !(await (\n await this.locatorFor('.sky-date-range-picker-end-date')()\n ).getProperty('hidden'));\n }\n\n /**\n * Whether the date range picker has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Whether start date datepicker is visible.\n */\n public async isStartDateVisible(): Promise<boolean> {\n return !(await (\n await this.locatorFor('.sky-date-range-picker-start-date')()\n ).getProperty('hidden'));\n }\n\n /**\n * Selects the specified calculator.\n */\n public async selectCalculator(\n calculatorId: SkyDateRangeCalculatorId,\n ): Promise<void> {\n const select = await this.locatorFor(\n 'select[FormControlName=\"calculatorId\"]',\n )();\n\n const options = await select.getProperty('options');\n\n let optionIndex: number | undefined;\n\n // Find the index of the option with the specified value.\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n\n if (`${option.value}` === `${calculatorId}`) {\n optionIndex = i;\n break;\n }\n }\n\n if (optionIndex === undefined) {\n throw new Error(`Could not find calculator with ID ${calculatorId}.`);\n }\n\n await select.selectOptions(optionIndex);\n }\n\n /**\n * Sets the end date.\n * @param newDate date input as a formatted string.\n */\n public async setEndDateValue(newDate: string): Promise<void> {\n if (!(await this.isEndDateVisible())) {\n throw new Error('Unable to set end date. End datepicker is not visible.');\n }\n const input = await (await this.#getEndDatepicker()).getControl();\n await input.setValue(newDate);\n }\n\n /**\n * Sets the start date.\n * @param newDate date input as a formatted string.\n */\n public async setStartDateValue(newDate: string): Promise<void> {\n if (!(await this.isEndDateVisible())) {\n throw new Error(\n 'Unable to set start date. Start datepicker is not visible.',\n );\n }\n const input = await (await this.#getStartDatepicker()).getControl();\n await input.setValue(newDate);\n }\n\n async #getEndDatepicker(): Promise<SkyDatepickerHarness> {\n return await (\n await this.#getEndDateInputBoxHarness()\n ).queryHarness(SkyDatepickerHarness);\n }\n\n async #getStartDatepicker(): Promise<SkyDatepickerHarness> {\n return await (\n await this.#getStartDateInputBoxHarness()\n ).queryHarness(SkyDatepickerHarness);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skyux-datetime-testing.mjs","sources":["../../../../../libs/components/datetime/testing/src/legacy/datepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/legacy/timepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/datepicker-calendar-harness.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/datepicker-input-harness.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/fuzzy-datepicker-input-harness.ts","../../../../../libs/components/datetime/testing/src/modules/datepicker/datepicker-harness.ts","../../../../../libs/components/datetime/testing/src/modules/date-range-picker/date-range-picker-harness.ts","../../../../../libs/components/datetime/testing/src/skyux-datetime-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX datepicker component.\n * @deprecated Use `SkyDatepickerHarness` instead.\n * @internal\n */\nexport class SkyDatepickerFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-datepicker',\n );\n }\n\n /**\n * The datepicker's currently selected date.\n */\n public get date(): string {\n return this.#getDatepickerInputEl().nativeElement.value;\n }\n\n /**\n * Flag indicating if datepicker input is disabled.\n */\n public get disabled(): boolean {\n return this.#getDatepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * The datepicker's calendar element.\n */\n public get calendarEl(): any {\n const button = this.#debugEl.query(\n By.css('.sky-datepicker .sky-input-group-datepicker-btn'),\n ).nativeElement;\n\n const calendarId = button.getAttribute('aria-controls');\n if (!calendarId) {\n return null;\n }\n\n return document.getElementById(calendarId);\n }\n\n /**\n * Click the calendar button to open or close calendar.\n */\n public clickDatepickerCalenderButtonEl(): void {\n this.#debugEl\n .query(By.css('.sky-datepicker .sky-input-group-datepicker-btn'))\n .nativeElement.click();\n }\n\n public clickDayEl(dayIndex: number): void {\n const dayEls = this.calendarEl.querySelectorAll('.sky-datepicker-btn-date');\n\n const dayEl = dayEls[dayIndex];\n\n if (!dayEl) {\n throw new Error(`No day exists at index ${dayIndex}.`);\n }\n\n dayEl.click();\n }\n\n #getDatepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-datepicker input'));\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX timepicker component.\n * @internal\n */\nexport class SkyTimepickerFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-timepicker',\n );\n }\n\n /**\n * The timepicker's currently selected time.\n */\n public get value(): string {\n return this.#getTimepickerInputEl().nativeElement.value;\n }\n\n /**\n * Set the timepicker's selected time.\n */\n public set value(value: string) {\n const timepickerInputEl = this.#getTimepickerInputEl().nativeElement;\n timepickerInputEl.value = value;\n this.#fixture.detectChanges();\n\n SkyAppTestUtility.fireDomEvent(timepickerInputEl, 'change');\n this.#fixture.detectChanges();\n }\n\n /**\n * Flag indicating if timepicker input is disabled.\n */\n public get isDisabled(): boolean {\n return this.#getTimepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * Set the timepicker's disabled value\n */\n public set isDisabled(value: boolean) {\n this.#getTimepickerInputEl().nativeElement.disabled = value;\n }\n\n /**\n * Flag indicating if timepicker input is valid.\n */\n public get isValid(): boolean {\n return !this.#getTimepickerInputEl().nativeElement.classList.contains(\n 'ng-invalid',\n );\n }\n\n #getTimepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-timepicker input'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarnessFilters } from './datepicker-calendar-harness.filters';\n\n/**\n * Harness for interacting with datepicker calendar in tests.\n */\nexport class SkyDatepickerCalendarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-datepicker-calendar-container';\n\n #getDaypicker = this.locatorForOptional('sky-daypicker');\n #getMonthpicker = this.locatorForOptional('sky-monthpicker');\n #getNextButton = this.locatorFor('.sky-datepicker-btn-next');\n #getPreviousButton = this.locatorFor('.sky-datepicker-btn-previous');\n #getSelected = this.locatorFor('.sky-datepicker-btn-selected');\n #getTitle = this.locatorFor('.sky-datepicker-calendar-title');\n #getTitleButton = this.locatorFor('.sky-datepicker-calendar-title');\n\n /**\n * @internal\n */\n public static with(\n filters: SkyDatepickerCalendarHarnessFilters,\n ): HarnessPredicate<SkyDatepickerCalendarHarness> {\n return new HarnessPredicate(SkyDatepickerCalendarHarness, filters);\n }\n\n /**\n * Clicks the specified date, month or year.\n * @params the specified value to click, in the following format\n * day format: dddd, MMMM Do YYYY\n * month format: MMMM YYYY\n * year format: YYYY\n */\n public async clickDate(date: string): Promise<void> {\n try {\n await (await this.locatorFor(`[aria-label=\"${date}\"]`)()).click();\n } catch {\n throw new Error(\n `Unable to find date with label \"${date}\". Check that the format is correct and matches the current calendar mode.`,\n );\n }\n }\n\n /**\n * Clicks the 'next' button on the calendar header.\n */\n public async clickNextButton(): Promise<void> {\n await (await this.#getNextButton()).click();\n }\n\n /**\n * Clicks the 'previous' button on the calendar header.\n */\n public async clickPreviousButton(): Promise<void> {\n await (await this.#getPreviousButton()).click();\n }\n\n /**\n * Clicks the 'title' button on the calendar header.\n */\n public async clickTitleButton(): Promise<void> {\n const button = await this.#getTitleButton();\n\n if (await button.hasClass('sky-btn-disabled')) {\n throw new Error('Title button is disabled.');\n }\n\n await button.click();\n }\n\n /**\n * Gets the current calendar mode.\n */\n public async getCalendarMode(): Promise<string> {\n if (await this.#getDaypicker()) {\n return 'day';\n } else if (await this.#getMonthpicker()) {\n return 'month';\n } else {\n return 'year';\n }\n }\n\n /**\n * Gets the current title.\n */\n public async getCalendarTitle(): Promise<string> {\n return (await (await this.#getTitle()).text()).trim();\n }\n\n /**\n * Gets the value of the currently selected calendar item.\n */\n public async getSelectedValue(): Promise<string | null> {\n return await (await this.#getSelected()).getAttribute('aria-label');\n }\n}\n","import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the datepicker input harness.\n */\nexport class SkyDatepickerInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = '[skyDatepickerInput]';\n\n /**\n * Blurs the input.\n */\n public override async blur(): Promise<void> {\n await super.blur();\n\n const host = await this.host();\n\n await host.dispatchEvent('focusout', {\n relatedTarget: null,\n });\n }\n\n /**\n * Sets the value of the input.\n */\n public override async setValue(value: string): Promise<void> {\n await super.setValue(value);\n\n await this.blur();\n await (await this.host()).dispatchEvent('change');\n }\n}\n","import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the fuzzy datepicker input harness.\n */\nexport class SkyFuzzyDatepickerInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = '[skyFuzzyDatepickerInput]';\n\n /**\n * Blurs the input.\n */\n public override async blur(): Promise<void> {\n await super.blur();\n\n const host = await this.host();\n\n await host.dispatchEvent('focusout', {\n relatedTarget: null,\n });\n }\n\n /**\n * Sets the value of the input.\n */\n public override async setValue(value: string): Promise<void> {\n await super.setValue(value);\n\n await (await this.host()).dispatchEvent('change');\n await this.blur();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarness } from './datepicker-calendar-harness';\nimport { SkyDatepickerFilters } from './datepicker-harness.filters';\nimport { SkyDatepickerInputHarness } from './datepicker-input-harness';\nimport { SkyFuzzyDatepickerInputHarness } from './fuzzy-datepicker-input-harness';\n\n/**\n * Harness for interacting with datepicker components in tests.\n */\nexport class SkyDatepickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-datepicker, .sky-input-group';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getCalendarButton = this.locatorFor('.sky-input-group-datepicker-btn');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDatepickerHarness` that meets certain criteria.\n *\n * These filters only work for standalone datepickers. For datepickers\n * wrapped inside `sky-input-box`, place filters on the input box instead and\n * query the datepicker using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static with(\n filters: SkyDatepickerFilters,\n ): HarnessPredicate<SkyDatepickerHarness> {\n return SkyDatepickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the calendar button.\n */\n public async clickCalendarButton(): Promise<void> {\n return await (await this.#getCalendarButton()).click();\n }\n\n /**\n * Gets the `SkyDatepickerCalendarHarness` for the calendar picker controlled by\n * the datepicker. Throws an error if the calendar picker is not open.\n */\n public async getDatepickerCalendar(): Promise<SkyDatepickerCalendarHarness> {\n const calendarId = await this.#getAriaControls();\n\n if (!calendarId) {\n throw new Error(\n 'Unable to get calendar picker because picker is closed.',\n );\n }\n\n return await this.#documentRootLocator.locatorFor(\n SkyDatepickerCalendarHarness.with({ selector: `#${calendarId}` }),\n )();\n }\n\n /**\n * Gets the datepicker input harness.\n */\n public async getControl(): Promise<\n SkyDatepickerInputHarness | SkyFuzzyDatepickerInputHarness\n > {\n return await this.locatorFor(\n SkyDatepickerInputHarness,\n SkyFuzzyDatepickerInputHarness,\n )();\n }\n\n /**\n * Whether the datepicker calendar picker is open.\n */\n public async isDatepickerOpen(): Promise<boolean> {\n return (\n (await (\n await this.#getCalendarButton()\n ).getAttribute('aria-expanded')) === 'true'\n );\n }\n\n async #getAriaControls(): Promise<string | null> {\n return await (\n await this.#getCalendarButton()\n ).getAttribute('aria-controls');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyDateRangeCalculatorId } from '@skyux/datetime';\nimport { SkyInputBoxHarness } from '@skyux/forms/testing';\n\nimport { SkyDatepickerHarness } from '../datepicker/datepicker-harness';\n\nimport { SkyDateRangePickerFilters } from './date-range-picker-harness.filters';\n\n/**\n * Harness for interacting with date range picker components in tests.\n */\nexport class SkyDateRangePickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-date-range-picker';\n\n #getStartDateInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-start-date',\n }),\n );\n #getEndDateInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-end-date',\n }),\n );\n #getCalculatorIdInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-select-calculator',\n }),\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDateRangePickerHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDateRangePickerFilters,\n ): HarnessPredicate<SkyDateRangePickerHarness> {\n return SkyDateRangePickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getCalculatorIdInputBoxHarness()).clickHelpInline();\n }\n\n /**\n * Gets the end date value.\n */\n public async getEndDateValue(): Promise<string> {\n await this.#assertEndDateVisible('Unable to get end date.');\n\n const input = await (await this.#getEndDatepicker()).getControl();\n\n return await input.getValue();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return (await (\n await this.#getCalculatorIdInputBoxHarness()\n ).getHelpPopoverContent()) as string | undefined;\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).getHelpPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getHintText();\n }\n\n /**\n * Gets the label text.\n */\n public async getLabelText(): Promise<string> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getLabelText();\n }\n\n /**\n * Gets the selected calculator ID.\n */\n public async getSelectedCalculator(): Promise<SkyDateRangeCalculatorId> {\n const calculatorIdHarness = await this.#getCalculatorIdInputBoxHarness();\n const selectEl = await calculatorIdHarness.querySelector('select');\n const value = await selectEl?.getProperty('value');\n\n /* istanbul ignore next: safety check */\n if (value === undefined || value === '') {\n throw new Error('No calculator selected.');\n }\n\n return +value as SkyDateRangeCalculatorId;\n }\n\n /**\n * Gets the start date value.\n */\n public async getStartDateValue(): Promise<string> {\n await this.#assertStartDateVisible('Unable to get start date.');\n\n const input = await (await this.#getStartDatepicker()).getControl();\n\n return await input.getValue();\n }\n\n /**\n * Whether date range picker end date before start date error is thrown.\n */\n public async hasEndDateBeforeStartDateError(): Promise<boolean> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).hasCustomFormError('endDateBeforeStartDate');\n }\n\n /**\n * Whether end date input has required error.\n */\n public async hasEndDateRequiredError(): Promise<boolean> {\n return await (await this.#getEndDateInputBoxHarness()).hasRequiredError();\n }\n\n /**\n * Whether a custom error has fired.\n * @params errorName `errorName` property of the custom `sky-form-error`.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).hasCustomFormError(errorName);\n }\n\n /**\n * Whether start date input has required error.\n */\n public async hasStartDateRequiredError(): Promise<boolean> {\n return await (await this.#getStartDateInputBoxHarness()).hasRequiredError();\n }\n\n /**\n * Whether the date range picker component is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getDisabled();\n }\n\n /**\n * Whether end date datepicker is visible.\n */\n public async isEndDateVisible(): Promise<boolean> {\n const hidden = await (\n await this.locatorFor('.sky-date-range-picker-end-date')()\n ).getProperty<boolean>('hidden');\n\n return !hidden;\n }\n\n /**\n * Whether the date range picker has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Whether start date datepicker is visible.\n */\n public async isStartDateVisible(): Promise<boolean> {\n const hidden = await (\n await this.locatorFor('.sky-date-range-picker-start-date')()\n ).getProperty<boolean>('hidden');\n\n return !hidden;\n }\n\n /**\n * Selects the specified calculator.\n */\n public async selectCalculator(\n calculatorId: SkyDateRangeCalculatorId,\n ): Promise<void> {\n const select = await this.locatorFor(\n 'select[FormControlName=\"calculatorId\"]',\n )();\n\n const options = await select.getProperty('options');\n\n let optionIndex: number | undefined;\n\n // Find the index of the option with the specified value.\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n\n if (`${option.value}` === `${calculatorId}`) {\n optionIndex = i;\n break;\n }\n }\n\n if (optionIndex === undefined) {\n throw new Error(`Could not find calculator with ID ${calculatorId}.`);\n }\n\n await select.selectOptions(optionIndex);\n }\n\n /**\n * Sets the end date.\n * @param newDate date input as a formatted string.\n */\n public async setEndDateValue(newDate: string): Promise<void> {\n await this.#assertEndDateVisible('Unable to set end date.');\n\n const input = await (await this.#getEndDatepicker()).getControl();\n\n await input.setValue(newDate);\n }\n\n /**\n * Sets the start date.\n * @param newDate date input as a formatted string.\n */\n public async setStartDateValue(newDate: string): Promise<void> {\n await this.#assertStartDateVisible('Unable to set start date.');\n\n const input = await (await this.#getStartDatepicker()).getControl();\n\n await input.setValue(newDate);\n }\n\n async #assertEndDateVisible(message: string): Promise<void> {\n if (!(await this.isEndDateVisible())) {\n throw new Error(`${message} End datepicker is not visible.`);\n }\n }\n\n async #assertStartDateVisible(message: string): Promise<void> {\n if (!(await this.isStartDateVisible())) {\n throw new Error(`${message} Start datepicker is not visible.`);\n }\n }\n\n async #getEndDatepicker(): Promise<SkyDatepickerHarness> {\n return await (\n await this.#getEndDateInputBoxHarness()\n ).queryHarness(SkyDatepickerHarness);\n }\n\n async #getStartDatepicker(): Promise<SkyDatepickerHarness> {\n return await (\n await this.#getStartDateInputBoxHarness()\n ).queryHarness(SkyDatepickerHarness);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}