@skyux/datetime 8.6.0 → 9.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/documentation.json +8 -8
  2. package/esm2022/lib/modules/date-pipe/date-format-utility.mjs +45 -0
  3. package/{esm2020 → esm2022}/lib/modules/date-pipe/date-pipe.module.mjs +5 -5
  4. package/esm2022/lib/modules/date-pipe/date.pipe.mjs +67 -0
  5. package/esm2022/lib/modules/date-pipe/fuzzy-date.pipe.mjs +47 -0
  6. package/{esm2020 → esm2022}/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +4 -4
  7. package/{esm2020 → 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 +518 -0
  9. package/{esm2020 → esm2022}/lib/modules/date-range-picker/date-range-picker.module.mjs +19 -19
  10. package/esm2022/lib/modules/date-range-picker/date-range.service.mjs +97 -0
  11. package/esm2022/lib/modules/date-range-picker/types/date-range-calculator.mjs +54 -0
  12. package/esm2022/lib/modules/datepicker/date-formatter.mjs +38 -0
  13. package/esm2022/lib/modules/datepicker/datepicker-adapter.service.mjs +23 -0
  14. package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +332 -0
  15. package/esm2022/lib/modules/datepicker/datepicker-calendar.component.mjs +95 -0
  16. package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-config.service.mjs +4 -4
  17. package/esm2022/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +487 -0
  18. package/esm2022/lib/modules/datepicker/datepicker-input.directive.mjs +534 -0
  19. package/esm2022/lib/modules/datepicker/datepicker.component.mjs +327 -0
  20. package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker.module.mjs +35 -35
  21. package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker.service.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/modules/datepicker/daypicker-button.component.mjs +4 -4
  23. package/esm2022/lib/modules/datepicker/daypicker-cell.component.mjs +128 -0
  24. package/esm2022/lib/modules/datepicker/daypicker.component.mjs +224 -0
  25. package/esm2022/lib/modules/datepicker/fuzzy-date.service.mjs +412 -0
  26. package/esm2022/lib/modules/datepicker/monthpicker.component.mjs +80 -0
  27. package/{esm2020 → esm2022}/lib/modules/datepicker/yearpicker.component.mjs +53 -54
  28. package/{esm2020 → esm2022}/lib/modules/shared/sky-datetime-resources.module.mjs +11 -11
  29. package/esm2022/lib/modules/timepicker/timepicker.component.mjs +396 -0
  30. package/esm2022/lib/modules/timepicker/timepicker.directive.mjs +237 -0
  31. package/{esm2020 → esm2022}/lib/modules/timepicker/timepicker.module.mjs +17 -17
  32. package/esm2022/testing/datepicker-fixture.mjs +55 -0
  33. package/esm2022/testing/timepicker-fixture.mjs +52 -0
  34. package/fesm2022/skyux-datetime-testing.mjs +112 -0
  35. package/{fesm2020 → fesm2022}/skyux-datetime-testing.mjs.map +1 -1
  36. package/fesm2022/skyux-datetime.mjs +5030 -0
  37. package/fesm2022/skyux-datetime.mjs.map +1 -0
  38. package/lib/modules/date-range-picker/date-range-picker.component.d.ts +1 -1
  39. package/lib/modules/datepicker/datepicker-calendar-inner.component.d.ts +1 -1
  40. package/lib/modules/datepicker/datepicker-calendar.component.d.ts +1 -1
  41. package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +1 -1
  42. package/lib/modules/datepicker/datepicker-input.directive.d.ts +1 -1
  43. package/lib/modules/datepicker/datepicker.component.d.ts +1 -1
  44. package/lib/modules/datepicker/daypicker-button.component.d.ts +1 -1
  45. package/lib/modules/datepicker/daypicker-cell.component.d.ts +1 -1
  46. package/lib/modules/datepicker/daypicker.component.d.ts +1 -1
  47. package/lib/modules/timepicker/timepicker.directive.d.ts +1 -1
  48. package/package.json +19 -27
  49. package/esm2020/lib/modules/date-pipe/date-format-utility.mjs +0 -45
  50. package/esm2020/lib/modules/date-pipe/date.pipe.mjs +0 -70
  51. package/esm2020/lib/modules/date-pipe/fuzzy-date.pipe.mjs +0 -50
  52. package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +0 -494
  53. package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +0 -100
  54. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +0 -53
  55. package/esm2020/lib/modules/datepicker/date-formatter.mjs +0 -38
  56. package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +0 -26
  57. package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +0 -333
  58. package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +0 -96
  59. package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +0 -462
  60. package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +0 -496
  61. package/esm2020/lib/modules/datepicker/datepicker.component.mjs +0 -319
  62. package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +0 -126
  63. package/esm2020/lib/modules/datepicker/daypicker.component.mjs +0 -216
  64. package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +0 -392
  65. package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +0 -81
  66. package/esm2020/lib/modules/timepicker/timepicker.component.mjs +0 -389
  67. package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +0 -236
  68. package/esm2020/testing/datepicker-fixture.mjs +0 -58
  69. package/esm2020/testing/timepicker-fixture.mjs +0 -55
  70. package/fesm2015/skyux-datetime-testing.mjs +0 -117
  71. package/fesm2015/skyux-datetime-testing.mjs.map +0 -1
  72. package/fesm2015/skyux-datetime.mjs +0 -4925
  73. package/fesm2015/skyux-datetime.mjs.map +0 -1
  74. package/fesm2020/skyux-datetime-testing.mjs +0 -117
  75. package/fesm2020/skyux-datetime.mjs +0 -4895
  76. package/fesm2020/skyux-datetime.mjs.map +0 -1
  77. /package/{esm2020 → esm2022}/index.mjs +0 -0
  78. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculation.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-config.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-id.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-type.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-default-calculator-config.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-default-calculator-configs.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-relative-value.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-calendar-change.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-custom-date.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-date.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/modules/datepicker/fuzzy-date.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/modules/timepicker/timepicker-time-format-type.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/modules/timepicker/timepicker-time-output.mjs +0 -0
  94. /package/{esm2020 → esm2022}/skyux-datetime.mjs +0 -0
  95. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  96. /package/{esm2020 → esm2022}/testing/skyux-datetime-testing.mjs +0 -0
@@ -0,0 +1,237 @@
1
+ import { Directive, HostListener, Input, forwardRef, } from '@angular/core';
2
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
3
+ import moment from 'moment';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@skyux/i18n";
6
+ const SKY_TIMEPICKER_VALUE_ACCESSOR = {
7
+ provide: NG_VALUE_ACCESSOR,
8
+ useExisting: forwardRef(() => SkyTimepickerInputDirective),
9
+ multi: true,
10
+ };
11
+ const SKY_TIMEPICKER_VALIDATOR = {
12
+ provide: NG_VALIDATORS,
13
+ useExisting: forwardRef(() => SkyTimepickerInputDirective),
14
+ multi: true,
15
+ };
16
+ export class SkyTimepickerInputDirective {
17
+ #_timeFormat = 'hh';
18
+ // TODO: In a future breaking change - grab the parent component through dependency injection and remove this setter.
19
+ /**
20
+ * Creates the timepicker input field and picker. Place this attribute on an `input` element,
21
+ * and wrap the input in a `sky-timepicker` component.
22
+ * This attribute must be set to the instance of the `sky-timepicker`.
23
+ * @required
24
+ */
25
+ get skyTimepickerInput() {
26
+ return this.#_skyTimepickerInput;
27
+ }
28
+ set skyTimepickerInput(value) {
29
+ this.#_skyTimepickerInput = value;
30
+ this.#updateTimepickerInput();
31
+ }
32
+ // TODO: In a future breaking change - make this more specific than "string"
33
+ /**
34
+ * The 12-hour `hh` or 24-hour `HH` time format for the input.
35
+ * @default "hh"
36
+ */
37
+ set timeFormat(value) {
38
+ this.#_timeFormat = value || 'hh';
39
+ }
40
+ get timeFormat() {
41
+ return this.#_timeFormat;
42
+ }
43
+ /**
44
+ * Whether to disable the timepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.
45
+ * To set the disabled state on reactive forms, use the `FormControl` instead.
46
+ * @default false
47
+ */
48
+ get disabled() {
49
+ return this.#_disabled;
50
+ }
51
+ set disabled(value) {
52
+ this.#_disabled = value || false;
53
+ this.#updateTimepickerInput();
54
+ this.#renderer.setProperty(this.#elRef.nativeElement, 'disabled', value);
55
+ }
56
+ get #modelValue() {
57
+ return this.#_modelValue;
58
+ }
59
+ set #modelValue(value) {
60
+ if (value !== this.#_modelValue) {
61
+ this.#_modelValue = value;
62
+ this.#updateTimepickerInput();
63
+ this.#setInputValue(value);
64
+ this.#_validatorChange();
65
+ this.#_onChange(value);
66
+ }
67
+ }
68
+ #control;
69
+ #_disabled = false;
70
+ #_modelValue;
71
+ #_skyTimepickerInput;
72
+ #renderer;
73
+ #elRef;
74
+ #resourcesService;
75
+ #changeDetector;
76
+ constructor(renderer, elRef, resourcesService, changeDetector) {
77
+ this.#renderer = renderer;
78
+ this.#elRef = elRef;
79
+ this.#resourcesService = resourcesService;
80
+ this.#changeDetector = changeDetector;
81
+ }
82
+ ngOnInit() {
83
+ this.#renderer.addClass(this.#elRef.nativeElement, 'sky-form-control');
84
+ this.pickerChangedSubscription =
85
+ this.skyTimepickerInput?.selectedTimeChanged.subscribe((newTime) => {
86
+ this.writeValue(newTime);
87
+ this.#_onTouched();
88
+ });
89
+ /* istanbul ignore else */
90
+ if (!this.#elRef.nativeElement.getAttribute('aria-label')) {
91
+ this.#resourcesService
92
+ .getString('skyux_timepicker_input_default_label')
93
+ .subscribe((value) => {
94
+ this.#renderer.setAttribute(this.#elRef.nativeElement, 'aria-label', value);
95
+ });
96
+ }
97
+ }
98
+ ngAfterContentInit() {
99
+ // Watch for the control to be added and initialize the value immediately.
100
+ /* istanbul ignore else */
101
+ if (this.#control && this.#control.parent) {
102
+ this.#control.setValue(this.#modelValue, {
103
+ emitEvent: false,
104
+ });
105
+ this.#changeDetector.markForCheck();
106
+ }
107
+ }
108
+ ngOnDestroy() {
109
+ /* istanbul ignore else */
110
+ if (this.pickerChangedSubscription) {
111
+ this.pickerChangedSubscription.unsubscribe();
112
+ }
113
+ }
114
+ ngOnChanges() {
115
+ if (this.skyTimepickerInput) {
116
+ this.skyTimepickerInput.setFormat(this.timeFormat);
117
+ this.skyTimepickerInput.returnFormat = this.returnFormat;
118
+ }
119
+ }
120
+ onChange(event) {
121
+ this.writeValue(event.target.value);
122
+ }
123
+ /* istanbul ignore next */
124
+ onBlur() {
125
+ this.#_onTouched();
126
+ }
127
+ registerOnChange(fn) {
128
+ this.#_onChange = fn;
129
+ }
130
+ registerOnTouched(fn) {
131
+ this.#_onTouched = fn;
132
+ }
133
+ registerOnValidatorChange(fn) {
134
+ this.#_validatorChange = fn;
135
+ }
136
+ setDisabledState(isDisabled) {
137
+ this.disabled = isDisabled;
138
+ }
139
+ writeValue(value) {
140
+ this.#modelValue = this.#formatter(value);
141
+ }
142
+ validate(control) {
143
+ if (!this.#control) {
144
+ this.#control = control;
145
+ }
146
+ const value = control.value;
147
+ if (!value) {
148
+ return null;
149
+ }
150
+ /* istanbul ignore next */
151
+ if (value.local === 'Invalid date') {
152
+ return {
153
+ skyTime: {
154
+ invalid: control.value,
155
+ },
156
+ };
157
+ }
158
+ return null;
159
+ }
160
+ #setInputValue(value) {
161
+ let formattedValue = '';
162
+ if (value) {
163
+ const output = moment(value).format(value.customFormat);
164
+ /* istanbul ignore else */
165
+ if (output !== 'Invalid date') {
166
+ formattedValue = output;
167
+ }
168
+ }
169
+ this.#renderer.setProperty(this.#elRef.nativeElement, 'value', formattedValue);
170
+ }
171
+ #formatter(time) {
172
+ if (time && typeof time !== 'string' && 'local' in time) {
173
+ return time;
174
+ }
175
+ if (typeof time === 'string') {
176
+ if (time.length === 0) {
177
+ return '';
178
+ }
179
+ const currentFormat = this.timeFormat === 'HH' ? 'H:mm' : 'h:mm A';
180
+ if (typeof this.returnFormat === 'undefined') {
181
+ this.returnFormat = currentFormat;
182
+ }
183
+ const formatTime = {
184
+ hour: moment(time, currentFormat).hour(),
185
+ minute: moment(time, currentFormat).minute(),
186
+ meridie: moment(time, currentFormat).format('A'),
187
+ timezone: parseInt(moment(time, currentFormat).format('Z'), 10),
188
+ iso8601: moment(time, currentFormat).toDate(),
189
+ local: moment(time, currentFormat).format(currentFormat),
190
+ customFormat: this.returnFormat,
191
+ };
192
+ return formatTime;
193
+ }
194
+ }
195
+ #updateTimepickerInput() {
196
+ if (this.skyTimepickerInput) {
197
+ this.skyTimepickerInput.disabled = this.disabled;
198
+ /* istanbul ignore else */
199
+ if (this.skyTimepickerInput.selectedTime !== this.#modelValue) {
200
+ this.skyTimepickerInput.selectedTime = this.#modelValue;
201
+ }
202
+ }
203
+ }
204
+ /* istanbul ignore next */
205
+ // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
206
+ #_onChange = (_) => { };
207
+ /* istanbul ignore next */
208
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
209
+ #_onTouched = () => { };
210
+ /* istanbul ignore next */
211
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
212
+ #_validatorChange = () => { };
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTimepickerInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
214
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: SkyTimepickerInputDirective, selector: "[skyTimepickerInput]", inputs: { skyTimepickerInput: "skyTimepickerInput", timeFormat: "timeFormat", returnFormat: "returnFormat", disabled: "disabled" }, host: { listeners: { "change": "onChange($event)", "blur": "onBlur()" } }, providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
215
+ }
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTimepickerInputDirective, decorators: [{
217
+ type: Directive,
218
+ args: [{
219
+ selector: '[skyTimepickerInput]',
220
+ providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR],
221
+ }]
222
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { skyTimepickerInput: [{
223
+ type: Input
224
+ }], timeFormat: [{
225
+ type: Input
226
+ }], returnFormat: [{
227
+ type: Input
228
+ }], disabled: [{
229
+ type: Input
230
+ }], onChange: [{
231
+ type: HostListener,
232
+ args: ['change', ['$event']]
233
+ }], onBlur: [{
234
+ type: HostListener,
235
+ args: ['blur']
236
+ }] } });
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUtMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBTzVCLE1BQU0sNkJBQTZCLEdBQUc7SUFDcEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFNRixNQUFNLE9BQU8sMkJBQTJCO0lBVXRDLFlBQVksR0FBZ0MsSUFBSSxDQUFDO0lBRWpELHFIQUFxSDtJQUNySDs7Ozs7T0FLRztJQUNILElBQ1csa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLGtCQUFrQixDQUFDLEtBQXlDO1FBQ3JFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELDRFQUE0RTtJQUM1RTs7O09BR0c7SUFDSCxJQUNXLFVB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LFlBQVksS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDekQ7U0FDRjtJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsdUlBQXVJO0lBQ3ZJLFVBQVUsR0FBRyxDQUFDLENBQU0sRUFBUSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ2xDLDBCQUEwQjtJQUMxQixnRUFBZ0U7SUFDaEUsV0FBVyxHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUM3QiwwQkFBMEI7SUFDMUIsZ0VBQWdFO0lBQ2hFLGlCQUFpQixHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQzs4R0E1UXhCLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDhQQUYzQixDQUFDLDZCQUE2QixFQUFFLHdCQUF3QixDQUFDOzsyRkFFekQsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLHdCQUF3QixDQUFDO2lCQUNyRTs4TEFxQlksa0JBQWtCO3NCQUQ1QixLQUFLO2dCQWdCSyxVQUFVO3NCQURwQixLQUFLO2dCQWNDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBU0ssUUFBUTtzQkFEbEIsS0FBSztnQkFvR0MsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPM0IsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLWZvcm1hdC10eXBlJztcbmltcG9ydCB7IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IH0gZnJvbSAnLi90aW1lcGlja2VyLXRpbWUtb3V0cHV0JztcbmltcG9ydCB7IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29tcG9uZW50JztcblxuY29uc3QgU0tZX1RJTUVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5VGltZXBpY2tlcklucHV0XScsXG4gIHByb3ZpZGVyczogW1NLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SLCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1JdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmVcbiAgaW1wbGVtZW50c1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVmFsaWRhdG9yLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBBZnRlckNvbnRlbnRJbml0XG57XG4gIHB1YmxpYyBwaWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICNfdGltZUZvcm1hdDogU2t5VGltZXBpY2tlclRpbWVGb3JtYXRUeXBlID0gJ2hoJztcblxuICAvLyBUT0RPOiBJbiBhIGZ1dHVyZSBicmVha2luZyBjaGFuZ2UgLSBncmFiIHRoZSBwYXJlbnQgY29tcG9uZW50IHRocm91Z2ggZGVwZW5kZW5jeSBpbmplY3Rpb24gYW5kIHJlbW92ZSB0aGlzIHNldHRlci5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHRpbWVwaWNrZXIgaW5wdXQgZmllbGQgYW5kIHBpY2tlci4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gYW4gYGlucHV0YCBlbGVtZW50LFxuICAgKiBhbmQgd3JhcCB0aGUgaW5wdXQgaW4gYSBgc2t5LXRpbWVwaWNrZXJgIGNvbXBvbmVudC5cbiAgICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGluc3RhbmNlIG9mIHRoZSBgc2t5LXRpbWVwaWNrZXJgLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgc2t5VGltZXBpY2tlcklucHV0KCk6IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2t5VGltZXBpY2tlcklucHV0O1xuICB9XG5cbiAgcHVibGljIHNldCBza3lUaW1lcGlja2VySW5wdXQodmFsdWU6IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2t5VGltZXBpY2tlcklucHV0ID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG4gIH1cblxuICAvLyBUT0RPOiBJbiBhIGZ1dHVyZSBicmVha2luZyBjaGFuZ2UgLSBtYWtlIHRoaXMgbW9yZSBzcGVjaWZpYyB0aGFuIFwic3RyaW5nXCJcbiAgLyoqXG4gICAqIFRoZSAxMi1ob3VyIGBoaGAgb3IgMjQtaG91ciBgSEhgIHRpbWUgZm9ybWF0IGZvciB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IFwiaGhcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0aW1lRm9ybWF0KHZhbHVlOiBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGltZUZvcm1hdCA9IHZhbHVlIHx8ICdoaCc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpbWVGb3JtYXQoKTogU2t5VGltZXBpY2tlclRpbWVGb3JtYXRUeXBlIHtcbiAgICByZXR1cm4gdGhpcy4jX3RpbWVGb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1c3RvbSB0aW1lIGZvcm1hdC4gRm9yIGV4YW1wbGVzLFxuICAgKiBzZWUgdGhlIFttb21lbnQuanNdKGh0dHBzOi8vbW9tZW50anMuY29tL2RvY3MvIy9kaXNwbGF5aW5nL2Zvcm1hdC8pIGRvY3MuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmV0dXJuRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGltZXBpY2tlciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWUgfHwgZmFsc2U7XG5cbiAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCAjbW9kZWxWYWx1ZSgpOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19tb2RlbFZhbHVlO1xuICB9XG5cbiAgc2V0ICNtb2RlbFZhbHVlKHZhbHVlOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX21vZGVsVmFsdWUpIHtcbiAgICAgIHRoaXMuI19tb2RlbFZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcbiAgICAgIHRoaXMuI3NldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy4jX3ZhbGlkYXRvckNoYW5nZSgpO1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAjY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19tb2RlbFZhbHVlOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZDtcbiAgI19za3lUaW1lcGlja2VySW5wdXQ6IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG4gICNlbFJlZjogRWxlbWVudFJlZjtcbiAgI3Jlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICByZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG4gICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZSA9IHJlc291cmNlc1NlcnZpY2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyh0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LCAnc2t5LWZvcm0tY29udHJvbCcpO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dD8uc2VsZWN0ZWRUaW1lQ2hhbmdlZC5zdWJzY3JpYmUoXG4gICAgICAgIChuZXdUaW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VGltZSk7XG4gICAgICAgICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2VcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdGltZXBpY2tlcl9pbnB1dF9kZWZhdWx0X2xhYmVsJylcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgIHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCcsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy8gV2F0Y2ggZm9yIHRoZSBjb250cm9sIHRvIGJlIGFkZGVkIGFuZCBpbml0aWFsaXplIHRoZSB2YWx1ZSBpbW1lZGlhdGVseS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNjb250cm9sICYmIHRoaXMuI2NvbnRyb2wucGFyZW50KSB7XG4gICAgICB0aGlzLiNjb250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsVmFsdWUsIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5yZXR1cm5Gb3JtYXQgPSB0aGlzLnJldHVybkZvcm1hdDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI19vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLiNtb2RlbFZhbHVlID0gdGhpcy4jZm9ybWF0dGVyKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICB0aGlzLiNjb250cm9sID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodmFsdWUubG9jYWwgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lUaW1lOiB7XG4gICAgICAgICAgaW52YWxpZDogY29udHJvbC52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAjc2V0SW5wdXRWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KHZhbHVlLmN1c3RvbUZvcm1hdCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG91dHB1dCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBvdXRwdXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ3ZhbHVlJyxcbiAgICAgIGZvcm1hdHRlZFZhbHVlXG4gICAgKTtcbiAgfVxuXG4gICNmb3JtYXR0ZXIodGltZTogYW55KSB7XG4gICAgaWYgKHRpbWUgJiYgdHlwZW9mIHRpbWUgIT09ICdzdHJpbmcnICYmICdsb2NhbCcgaW4gdGltZSkge1xuICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGltZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0aW1lLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50Rm9ybWF0ID0gdGhpcy50aW1lRm9ybWF0ID09PSAnSEgnID8gJ0g6bW0nIDogJ2g6bW0gQSc7XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMucmV0dXJuRm9ybWF0ID0gY3VycmVudEZvcm1hdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0VGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgPSB7XG4gICAgICAgIGhvdXI6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5ob3VyKCksXG4gICAgICAgIG1pbnV0ZTogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLm1pbnV0ZSgpLFxuICAgICAgICBtZXJpZGllOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KCdBJyksXG4gICAgICAgIHRpbWV6b25lOiBwYXJzZUludChtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KCdaJyksIDEwKSxcbiAgICAgICAgaXNvODYwMTogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLnRvRGF0ZSgpLFxuICAgICAgICBsb2NhbDogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmZvcm1hdChjdXJyZW50Rm9ybWF0KSxcbiAgICAgICAgY3VzdG9tRm9ybWF0OiB0aGlzLnJldHVybkZvcm1hdCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gZm9ybWF0VGltZTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlVGltZXBpY2tlcklucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNlbGVjdGVkVGltZSAhPT0gdGhpcy4jbW9kZWxWYWx1ZSkge1xuICAgICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5zZWxlY3RlZFRpbWUgPSB0aGlzLiNtb2RlbFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAjX29uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjX3ZhbGlkYXRvckNoYW5nZSA9ICgpOiB2b2lkID0+IHt9O1xufVxuIl19
@@ -9,23 +9,23 @@ import { SkyTimepickerComponent } from './timepicker.component';
9
9
  import { SkyTimepickerInputDirective } from './timepicker.directive';
10
10
  import * as i0 from "@angular/core";
11
11
  export class SkyTimepickerModule {
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent], imports: [CommonModule,
14
+ SkyI18nModule,
15
+ SkyIconModule,
16
+ SkyDatetimeResourcesModule,
17
+ SkyAffixModule,
18
+ SkyOverlayModule,
19
+ SkyThemeModule], exports: [SkyTimepickerInputDirective, SkyTimepickerComponent] }); }
20
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTimepickerModule, imports: [CommonModule,
21
+ SkyI18nModule,
22
+ SkyIconModule,
23
+ SkyDatetimeResourcesModule,
24
+ SkyAffixModule,
25
+ SkyOverlayModule,
26
+ SkyThemeModule] }); }
12
27
  }
13
- SkyTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- SkyTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent], imports: [CommonModule,
15
- SkyI18nModule,
16
- SkyIconModule,
17
- SkyDatetimeResourcesModule,
18
- SkyAffixModule,
19
- SkyOverlayModule,
20
- SkyThemeModule], exports: [SkyTimepickerInputDirective, SkyTimepickerComponent] });
21
- SkyTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTimepickerModule, imports: [CommonModule,
22
- SkyI18nModule,
23
- SkyIconModule,
24
- SkyDatetimeResourcesModule,
25
- SkyAffixModule,
26
- SkyOverlayModule,
27
- SkyThemeModule] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTimepickerModule, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTimepickerModule, decorators: [{
29
29
  type: NgModule,
30
30
  args: [{
31
31
  declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent],
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
41
41
  exports: [SkyTimepickerInputDirective, SkyTimepickerComponent],
42
42
  }]
43
43
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWVyRSxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBWmYsMkJBQTJCLEVBQUUsc0JBQXNCLGFBRWhFLFlBQVk7UUFDWixhQUFhO1FBQ2IsYUFBYTtRQUNiLDBCQUEwQjtRQUMxQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGNBQWMsYUFFTiwyQkFBMkIsRUFBRSxzQkFBc0I7aUhBRWxELG1CQUFtQixZQVY1QixZQUFZO1FBQ1osYUFBYTtRQUNiLGFBQWE7UUFDYiwwQkFBMEI7UUFDMUIsY0FBYztRQUNkLGdCQUFnQjtRQUNoQixjQUFjOzJGQUlMLG1CQUFtQjtrQkFiL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxzQkFBc0IsQ0FBQztvQkFDbkUsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBZmZpeE1vZHVsZSwgU2t5T3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZGF0ZXRpbWUtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vdGltZXBpY2tlci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmUsIFNreVRpbWVwaWNrZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUkxOG5Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lBZmZpeE1vZHVsZSxcbiAgICBTa3lPdmVybGF5TW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlLCBTa3lUaW1lcGlja2VyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGltZXBpY2tlck1vZHVsZSB7fVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWVyRSxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFaZiwyQkFBMkIsRUFBRSxzQkFBc0IsYUFFaEUsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsY0FBYyxhQUVOLDJCQUEyQixFQUFFLHNCQUFzQjsrR0FFbEQsbUJBQW1CLFlBVjVCLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYTtZQUNiLDBCQUEwQjtZQUMxQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLGNBQWM7OzJGQUlMLG1CQUFtQjtrQkFiL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxzQkFBc0IsQ0FBQztvQkFDbkUsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBZmZpeE1vZHVsZSwgU2t5T3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZGF0ZXRpbWUtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vdGltZXBpY2tlci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmUsIFNreVRpbWVwaWNrZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUkxOG5Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lBZmZpeE1vZHVsZSxcbiAgICBTa3lPdmVybGF5TW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlLCBTa3lUaW1lcGlja2VyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGltZXBpY2tlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,55 @@
1
+ import { By } from '@angular/platform-browser';
2
+ import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
+ /**
4
+ * Allows interaction with a SKY UX datepicker component.
5
+ * @internal
6
+ */
7
+ export class SkyDatepickerFixture {
8
+ #debugEl;
9
+ constructor(fixture, skyTestId) {
10
+ this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-datepicker');
11
+ }
12
+ /**
13
+ * The datepicker's currently selected date.
14
+ */
15
+ get date() {
16
+ return this.#getDatepickerInputEl().nativeElement.value;
17
+ }
18
+ /**
19
+ * Flag indicating if datepicker input is disabled.
20
+ */
21
+ get disabled() {
22
+ return this.#getDatepickerInputEl().nativeElement.disabled;
23
+ }
24
+ /**
25
+ * The datepicker's calendar element.
26
+ */
27
+ get calendarEl() {
28
+ const button = this.#debugEl.query(By.css('.sky-datepicker .sky-input-group-datepicker-btn')).nativeElement;
29
+ const calendarId = button.getAttribute('aria-controls');
30
+ if (!calendarId) {
31
+ return null;
32
+ }
33
+ return document.getElementById(calendarId);
34
+ }
35
+ /**
36
+ * Click the calendar button to open or close calendar.
37
+ */
38
+ clickDatepickerCalenderButtonEl() {
39
+ this.#debugEl
40
+ .query(By.css('.sky-datepicker .sky-input-group-datepicker-btn'))
41
+ .nativeElement.click();
42
+ }
43
+ clickDayEl(dayIndex) {
44
+ const dayEls = this.calendarEl.querySelectorAll('.sky-datepicker-btn-date');
45
+ const dayEl = dayEls[dayIndex];
46
+ if (!dayEl) {
47
+ throw new Error(`No day exists at index ${dayIndex}.`);
48
+ }
49
+ dayEl.click();
50
+ }
51
+ #getDatepickerInputEl() {
52
+ return this.#debugEl.query(By.css('.sky-datepicker input'));
53
+ }
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1maXh0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL2RhdGVwaWNrZXItZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixRQUFRLENBQWU7SUFFdkIsWUFBWSxPQUE4QixFQUFFLFNBQWlCO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsdUJBQXVCLENBQ3ZELE9BQU8sRUFDUCxTQUFTLEVBQ1QsZ0JBQWdCLENBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQ2hDLEVBQUUsQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FDMUQsQ0FBQyxhQUFhLENBQUM7UUFFaEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSwrQkFBK0I7UUFDcEMsSUFBSSxDQUFDLFFBQVE7YUFDVixLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2FBQ2hFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sVUFBVSxDQUFDLFFBQWdCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUU1RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU2t5QXBwVGVzdFV0aWxpdHkgfSBmcm9tICdAc2t5dXgtc2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEFsbG93cyBpbnRlcmFjdGlvbiB3aXRoIGEgU0tZIFVYIGRhdGVwaWNrZXIgY29tcG9uZW50LlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyRml4dHVyZSB7XG4gICNkZWJ1Z0VsOiBEZWJ1Z0VsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+LCBza3lUZXN0SWQ6IHN0cmluZykge1xuICAgIHRoaXMuI2RlYnVnRWwgPSBTa3lBcHBUZXN0VXRpbGl0eS5nZXREZWJ1Z0VsZW1lbnRCeVRlc3RJZChcbiAgICAgIGZpeHR1cmUsXG4gICAgICBza3lUZXN0SWQsXG4gICAgICAnc2t5LWRhdGVwaWNrZXInXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZXBpY2tlcidzIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIGdldCBkYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2dldERhdGVwaWNrZXJJbnB1dEVsKCkubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgZGF0ZXBpY2tlciBpbnB1dCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2dldERhdGVwaWNrZXJJbnB1dEVsKCkubmF0aXZlRWxlbWVudC5kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZXBpY2tlcidzIGNhbGVuZGFyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNhbGVuZGFyRWwoKTogYW55IHtcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KFxuICAgICAgQnkuY3NzKCcuc2t5LWRhdGVwaWNrZXIgLnNreS1pbnB1dC1ncm91cC1kYXRlcGlja2VyLWJ0bicpXG4gICAgKS5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgY2FsZW5kYXJJZCA9IGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcbiAgICBpZiAoIWNhbGVuZGFySWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYWxlbmRhcklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGljayB0aGUgY2FsZW5kYXIgYnV0dG9uIHRvIG9wZW4gb3IgY2xvc2UgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgY2xpY2tEYXRlcGlja2VyQ2FsZW5kZXJCdXR0b25FbCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkZWJ1Z0VsXG4gICAgICAucXVlcnkoQnkuY3NzKCcuc2t5LWRhdGVwaWNrZXIgLnNreS1pbnB1dC1ncm91cC1kYXRlcGlja2VyLWJ0bicpKVxuICAgICAgLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGlja0RheUVsKGRheUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBkYXlFbHMgPSB0aGlzLmNhbGVuZGFyRWwucXVlcnlTZWxlY3RvckFsbCgnLnNreS1kYXRlcGlja2VyLWJ0bi1kYXRlJyk7XG5cbiAgICBjb25zdCBkYXlFbCA9IGRheUVsc1tkYXlJbmRleF07XG5cbiAgICBpZiAoIWRheUVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRheSBleGlzdHMgYXQgaW5kZXggJHtkYXlJbmRleH0uYCk7XG4gICAgfVxuXG4gICAgZGF5RWwuY2xpY2soKTtcbiAgfVxuXG4gICNnZXREYXRlcGlja2VySW5wdXRFbCgpOiBEZWJ1Z0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnLnNreS1kYXRlcGlja2VyIGlucHV0JykpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { By } from '@angular/platform-browser';
2
+ import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
+ /**
4
+ * Allows interaction with a SKY UX timepicker component.
5
+ * @internal
6
+ */
7
+ export class SkyTimepickerFixture {
8
+ #debugEl;
9
+ #fixture;
10
+ constructor(fixture, skyTestId) {
11
+ this.#fixture = fixture;
12
+ this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-timepicker');
13
+ }
14
+ /**
15
+ * The timepicker's currently selected time.
16
+ */
17
+ get value() {
18
+ return this.#getTimepickerInputEl().nativeElement.value;
19
+ }
20
+ /**
21
+ * Set the timepicker's selected time.
22
+ */
23
+ set value(value) {
24
+ const timepickerInputEl = this.#getTimepickerInputEl().nativeElement;
25
+ timepickerInputEl.value = value;
26
+ this.#fixture.detectChanges();
27
+ SkyAppTestUtility.fireDomEvent(timepickerInputEl, 'change');
28
+ this.#fixture.detectChanges();
29
+ }
30
+ /**
31
+ * Flag indicating if timepicker input is disabled.
32
+ */
33
+ get isDisabled() {
34
+ return this.#getTimepickerInputEl().nativeElement.disabled;
35
+ }
36
+ /**
37
+ * Set the timepicker's disabled value
38
+ */
39
+ set isDisabled(value) {
40
+ this.#getTimepickerInputEl().nativeElement.disabled = value;
41
+ }
42
+ /**
43
+ * Flag indicating if timepicker input is valid.
44
+ */
45
+ get isValid() {
46
+ return !this.#getTimepickerInputEl().nativeElement.classList.contains('ng-invalid');
47
+ }
48
+ #getTimepickerInputEl() {
49
+ return this.#debugEl.query(By.css('.sky-timepicker input'));
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci1maXh0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL3RpbWVwaWNrZXItZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixRQUFRLENBQWU7SUFDdkIsUUFBUSxDQUF3QjtJQUVoQyxZQUFZLE9BQThCLEVBQUUsU0FBaUI7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FDdkQsT0FBTyxFQUNQLFNBQVMsRUFDVCxnQkFBZ0IsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUMxRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLEtBQUssQ0FBQyxLQUFhO1FBQzVCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3JFLGlCQUFpQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU5QixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsVUFBVSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDbkUsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTa3lBcHBUZXN0VXRpbGl0eSB9IGZyb20gJ0Bza3l1eC1zZGsvdGVzdGluZyc7XG5cbi8qKlxuICogQWxsb3dzIGludGVyYWN0aW9uIHdpdGggYSBTS1kgVVggdGltZXBpY2tlciBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJGaXh0dXJlIHtcbiAgI2RlYnVnRWw6IERlYnVnRWxlbWVudDtcbiAgI2ZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4sIHNreVRlc3RJZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jZml4dHVyZSA9IGZpeHR1cmU7XG4gICAgdGhpcy4jZGVidWdFbCA9IFNreUFwcFRlc3RVdGlsaXR5LmdldERlYnVnRWxlbWVudEJ5VGVzdElkKFxuICAgICAgZml4dHVyZSxcbiAgICAgIHNreVRlc3RJZCxcbiAgICAgICdza3ktdGltZXBpY2tlcidcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lcGlja2VyJ3MgY3VycmVudGx5IHNlbGVjdGVkIHRpbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2dldFRpbWVwaWNrZXJJbnB1dEVsKCkubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRpbWVwaWNrZXIncyBzZWxlY3RlZCB0aW1lLlxuICAgKi9cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGltZXBpY2tlcklucHV0RWwgPSB0aGlzLiNnZXRUaW1lcGlja2VySW5wdXRFbCgpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGltZXBpY2tlcklucHV0RWwudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcblxuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudCh0aW1lcGlja2VySW5wdXRFbCwgJ2NoYW5nZScpO1xuICAgIHRoaXMuI2ZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgaW5kaWNhdGluZyBpZiB0aW1lcGlja2VyIGlucHV0IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNnZXRUaW1lcGlja2VySW5wdXRFbCgpLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0aW1lcGlja2VyJ3MgZGlzYWJsZWQgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI2dldFRpbWVwaWNrZXJJbnB1dEVsKCkubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgaW5kaWNhdGluZyBpZiB0aW1lcGlja2VyIGlucHV0IGlzIHZhbGlkLlxuICAgKi9cbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy4jZ2V0VGltZXBpY2tlcklucHV0RWwoKS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICduZy1pbnZhbGlkJ1xuICAgICk7XG4gIH1cblxuICAjZ2V0VGltZXBpY2tlcklucHV0RWwoKTogRGVidWdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jZGVidWdFbC5xdWVyeShCeS5jc3MoJy5za3ktdGltZXBpY2tlciBpbnB1dCcpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,112 @@
1
+ import { By } from '@angular/platform-browser';
2
+ import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
+
4
+ /**
5
+ * Allows interaction with a SKY UX datepicker component.
6
+ * @internal
7
+ */
8
+ class SkyDatepickerFixture {
9
+ #debugEl;
10
+ constructor(fixture, skyTestId) {
11
+ this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-datepicker');
12
+ }
13
+ /**
14
+ * The datepicker's currently selected date.
15
+ */
16
+ get date() {
17
+ return this.#getDatepickerInputEl().nativeElement.value;
18
+ }
19
+ /**
20
+ * Flag indicating if datepicker input is disabled.
21
+ */
22
+ get disabled() {
23
+ return this.#getDatepickerInputEl().nativeElement.disabled;
24
+ }
25
+ /**
26
+ * The datepicker's calendar element.
27
+ */
28
+ get calendarEl() {
29
+ const button = this.#debugEl.query(By.css('.sky-datepicker .sky-input-group-datepicker-btn')).nativeElement;
30
+ const calendarId = button.getAttribute('aria-controls');
31
+ if (!calendarId) {
32
+ return null;
33
+ }
34
+ return document.getElementById(calendarId);
35
+ }
36
+ /**
37
+ * Click the calendar button to open or close calendar.
38
+ */
39
+ clickDatepickerCalenderButtonEl() {
40
+ this.#debugEl
41
+ .query(By.css('.sky-datepicker .sky-input-group-datepicker-btn'))
42
+ .nativeElement.click();
43
+ }
44
+ clickDayEl(dayIndex) {
45
+ const dayEls = this.calendarEl.querySelectorAll('.sky-datepicker-btn-date');
46
+ const dayEl = dayEls[dayIndex];
47
+ if (!dayEl) {
48
+ throw new Error(`No day exists at index ${dayIndex}.`);
49
+ }
50
+ dayEl.click();
51
+ }
52
+ #getDatepickerInputEl() {
53
+ return this.#debugEl.query(By.css('.sky-datepicker input'));
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Allows interaction with a SKY UX timepicker component.
59
+ * @internal
60
+ */
61
+ class SkyTimepickerFixture {
62
+ #debugEl;
63
+ #fixture;
64
+ constructor(fixture, skyTestId) {
65
+ this.#fixture = fixture;
66
+ this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-timepicker');
67
+ }
68
+ /**
69
+ * The timepicker's currently selected time.
70
+ */
71
+ get value() {
72
+ return this.#getTimepickerInputEl().nativeElement.value;
73
+ }
74
+ /**
75
+ * Set the timepicker's selected time.
76
+ */
77
+ set value(value) {
78
+ const timepickerInputEl = this.#getTimepickerInputEl().nativeElement;
79
+ timepickerInputEl.value = value;
80
+ this.#fixture.detectChanges();
81
+ SkyAppTestUtility.fireDomEvent(timepickerInputEl, 'change');
82
+ this.#fixture.detectChanges();
83
+ }
84
+ /**
85
+ * Flag indicating if timepicker input is disabled.
86
+ */
87
+ get isDisabled() {
88
+ return this.#getTimepickerInputEl().nativeElement.disabled;
89
+ }
90
+ /**
91
+ * Set the timepicker's disabled value
92
+ */
93
+ set isDisabled(value) {
94
+ this.#getTimepickerInputEl().nativeElement.disabled = value;
95
+ }
96
+ /**
97
+ * Flag indicating if timepicker input is valid.
98
+ */
99
+ get isValid() {
100
+ return !this.#getTimepickerInputEl().nativeElement.classList.contains('ng-invalid');
101
+ }
102
+ #getTimepickerInputEl() {
103
+ return this.#debugEl.query(By.css('.sky-timepicker input'));
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Generated bundle index. Do not edit.
109
+ */
110
+
111
+ export { SkyDatepickerFixture, SkyTimepickerFixture };
112
+ //# sourceMappingURL=skyux-datetime-testing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-datetime-testing.mjs","sources":["../../../../../libs/components/datetime/testing/src/datepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/timepicker-fixture.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 * @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","/**\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/datepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/timepicker-fixture.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 * @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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}