@skyux/datetime 5.0.2 → 5.1.2

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 (68) hide show
  1. package/bundles/skyux-datetime-testing.umd.js +3 -1
  2. package/bundles/skyux-datetime-testing.umd.js.map +1 -1
  3. package/bundles/skyux-datetime.umd.js +871 -434
  4. package/bundles/skyux-datetime.umd.js.map +1 -1
  5. package/documentation.json +1355 -971
  6. package/esm2015/modules/date-pipe/date-format-utility.js +10 -10
  7. package/esm2015/modules/date-pipe/date-pipe.module.js +9 -30
  8. package/esm2015/modules/date-pipe/date.pipe.js +7 -6
  9. package/esm2015/modules/date-pipe/fuzzy-date.pipe.js +5 -5
  10. package/esm2015/modules/date-range-picker/date-range-picker.component.js +30 -30
  11. package/esm2015/modules/date-range-picker/date-range-picker.module.js +11 -13
  12. package/esm2015/modules/date-range-picker/date-range.service.js +8 -13
  13. package/esm2015/modules/date-range-picker/types/date-range-calculation.js +1 -1
  14. package/esm2015/modules/date-range-picker/types/date-range-calculator-config.js +1 -1
  15. package/esm2015/modules/date-range-picker/types/date-range-calculator-date-range-function.js +1 -1
  16. package/esm2015/modules/date-range-picker/types/date-range-calculator-id.js +1 -1
  17. package/esm2015/modules/date-range-picker/types/date-range-calculator-type.js +1 -1
  18. package/esm2015/modules/date-range-picker/types/date-range-calculator-validate-function.js +1 -1
  19. package/esm2015/modules/date-range-picker/types/date-range-calculator.js +2 -2
  20. package/esm2015/modules/date-range-picker/types/date-range-default-calculator-config.js +1 -1
  21. package/esm2015/modules/date-range-picker/types/date-range-default-calculator-configs.js +25 -25
  22. package/esm2015/modules/date-range-picker/types/date-range-relative-value.js +17 -17
  23. package/esm2015/modules/date-range-picker/types/date-range.js +1 -1
  24. package/esm2015/modules/datepicker/date-formatter.js +4 -3
  25. package/esm2015/modules/datepicker/datepicker-adapter.service.js +4 -4
  26. package/esm2015/modules/datepicker/datepicker-calendar-change.js +2 -0
  27. package/esm2015/modules/datepicker/datepicker-calendar-inner.component.js +42 -15
  28. package/esm2015/modules/datepicker/datepicker-calendar.component.js +24 -14
  29. package/esm2015/modules/datepicker/datepicker-config.service.js +5 -5
  30. package/esm2015/modules/datepicker/datepicker-custom-date.js +2 -0
  31. package/esm2015/modules/datepicker/datepicker-date.js +1 -1
  32. package/esm2015/modules/datepicker/datepicker-input-fuzzy.directive.js +41 -41
  33. package/esm2015/modules/datepicker/datepicker-input.directive.js +38 -39
  34. package/esm2015/modules/datepicker/datepicker.component.js +68 -17
  35. package/esm2015/modules/datepicker/datepicker.module.js +28 -13
  36. package/esm2015/modules/datepicker/datepicker.service.js +21 -0
  37. package/esm2015/modules/datepicker/daypicker-button.component.js +25 -0
  38. package/esm2015/modules/datepicker/daypicker-cell.component.js +128 -0
  39. package/esm2015/modules/datepicker/daypicker.component.js +111 -20
  40. package/esm2015/modules/datepicker/fuzzy-date.js +1 -1
  41. package/esm2015/modules/datepicker/fuzzy-date.service.js +55 -27
  42. package/esm2015/modules/datepicker/monthpicker.component.js +8 -10
  43. package/esm2015/modules/datepicker/yearpicker.component.js +17 -12
  44. package/esm2015/modules/shared/sky-datetime-resources.module.js +102 -15
  45. package/esm2015/modules/timepicker/timepicker.component.js +29 -30
  46. package/esm2015/modules/timepicker/timepicker.directive.js +37 -36
  47. package/esm2015/modules/timepicker/timepicker.interface.js +1 -1
  48. package/esm2015/modules/timepicker/timepicker.module.js +10 -18
  49. package/esm2015/public-api.js +3 -1
  50. package/esm2015/testing/datepicker-fixture.js +4 -2
  51. package/esm2015/testing/timepicker-fixture.js +1 -1
  52. package/fesm2015/skyux-datetime-testing.js +3 -1
  53. package/fesm2015/skyux-datetime-testing.js.map +1 -1
  54. package/fesm2015/skyux-datetime.js +850 -422
  55. package/fesm2015/skyux-datetime.js.map +1 -1
  56. package/modules/datepicker/datepicker-calendar-change.d.ts +24 -0
  57. package/modules/datepicker/datepicker-calendar-inner.component.d.ts +13 -3
  58. package/modules/datepicker/datepicker-calendar.component.d.ts +8 -2
  59. package/modules/datepicker/datepicker-custom-date.d.ts +21 -0
  60. package/modules/datepicker/datepicker-date.d.ts +2 -0
  61. package/modules/datepicker/datepicker.component.d.ts +14 -1
  62. package/modules/datepicker/datepicker.module.d.ts +11 -8
  63. package/modules/datepicker/datepicker.service.d.ts +15 -0
  64. package/modules/datepicker/daypicker-button.component.d.ts +16 -0
  65. package/modules/datepicker/daypicker-cell.component.d.ts +40 -0
  66. package/modules/datepicker/daypicker.component.d.ts +18 -3
  67. package/package.json +7 -7
  68. package/public-api.d.ts +2 -0
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Pipe, NgModule, Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, ViewChild, ElementRef, TemplateRef, ChangeDetectionStrategy, Optional, forwardRef, Directive, HostListener } from '@angular/core';
2
+ import { Pipe, NgModule, Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, ViewChild, ElementRef, TemplateRef, Optional, forwardRef, Directive, HostListener } from '@angular/core';
3
3
  import { Subject, fromEvent, BehaviorSubject, forkJoin, combineLatest } from 'rxjs';
4
- import { takeUntil, distinctUntilChanged, first, map } from 'rxjs/operators';
4
+ import { takeUntil, debounceTime, distinctUntilChanged, first, map } from 'rxjs/operators';
5
5
  import * as i3 from '@skyux/i18n';
6
6
  import { SkyIntlDateFormatter, getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
7
7
  import moment from 'moment';
8
- import * as i3$1 from '@angular/common';
8
+ import * as i5 from '@angular/common';
9
9
  import { CommonModule } from '@angular/common';
10
10
  import * as i2$2 from '@angular/forms';
11
11
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, FormControl, ReactiveFormsModule } from '@angular/forms';
@@ -14,9 +14,11 @@ import { SkyInputBoxModule } from '@skyux/forms';
14
14
  import * as i1 from '@skyux/core';
15
15
  import { SkyAffixAutoFitContext, SkyAffixModule, SkyOverlayModule } from '@skyux/core';
16
16
  import * as i2 from '@skyux/indicators';
17
- import { SkyIconModule } from '@skyux/indicators';
17
+ import { SkyIconModule, SkyWaitModule } from '@skyux/indicators';
18
18
  import * as i3$2 from '@skyux/theme';
19
19
  import { SkyThemeModule } from '@skyux/theme';
20
+ import * as i3$1 from '@skyux/popovers';
21
+ import { SkyPopoverMessageType, SkyPopoverModule } from '@skyux/popovers';
20
22
 
21
23
  // This class is mostly ported from the Angular 4.x DatePipe in order to maintain the old
22
24
  class SkyDateFormatUtility {
@@ -45,14 +47,14 @@ class SkyDateFormatUtility {
45
47
  }
46
48
  }
47
49
  SkyDateFormatUtility._ALIASES = {
48
- 'medium': 'yMMMdjms',
49
- 'short': 'yMdjm',
50
- 'fullDate': 'yMMMMEEEEd',
51
- 'longDate': 'yMMMMd',
52
- 'mediumDate': 'yMMMd',
53
- 'shortDate': 'yMd',
54
- 'mediumTime': 'jms',
55
- 'shortTime': 'jm'
50
+ medium: 'yMMMdjms',
51
+ short: 'yMdjm',
52
+ fullDate: 'yMMMMEEEEd',
53
+ longDate: 'yMMMMd',
54
+ mediumDate: 'yMMMd',
55
+ shortDate: 'yMd',
56
+ mediumTime: 'jms',
57
+ shortTime: 'jm',
56
58
  };
57
59
  function isBlank(obj) {
58
60
  return !obj;
@@ -76,7 +78,8 @@ class SkyDatePipe {
76
78
  this.defaultFormat = 'short';
77
79
  this.defaultLocale = 'en-US';
78
80
  this.ngUnsubscribe = new Subject();
79
- this.localeProvider.getLocaleInfo()
81
+ this.localeProvider
82
+ .getLocaleInfo()
80
83
  .pipe(takeUntil(this.ngUnsubscribe))
81
84
  .subscribe((localeInfo) => {
82
85
  this.defaultLocale = localeInfo.locale;
@@ -108,13 +111,13 @@ class SkyDatePipe {
108
111
  this.formattedValue = SkyDateFormatUtility.format(locale, this.value, format);
109
112
  }
110
113
  }
111
- SkyDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipe, deps: [{ token: i3.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Pipe });
112
- SkyDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipe, name: "skyDate", pure: false });
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipe, decorators: [{
114
+ SkyDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipe, deps: [{ token: i3.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Pipe });
115
+ SkyDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipe, name: "skyDate", pure: false });
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipe, decorators: [{
114
117
  type: Pipe,
115
118
  args: [{
116
119
  name: 'skyDate',
117
- pure: false
120
+ pure: false,
118
121
  }]
119
122
  }], ctorParameters: function () { return [{ type: i3.SkyAppLocaleProvider }]; } });
120
123
 
@@ -125,10 +128,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
125
128
  * To update this file, simply rerun the command.
126
129
  */
127
130
  const RESOURCES = {
128
- 'EN-AU': { "skyux_date_range_picker_format_label_last_fiscal_year": { "message": "Last financial year" }, "skyux_date_range_picker_format_label_this_fiscal_year": { "message": "This financial year" }, "skyux_date_range_picker_format_label_next_fiscal_year": { "message": "Next financial year" } },
129
- 'EN-GB': { "skyux_date_range_picker_format_label_last_fiscal_year": { "message": "Last financial year" }, "skyux_date_range_picker_format_label_this_fiscal_year": { "message": "This financial year" }, "skyux_date_range_picker_format_label_next_fiscal_year": { "message": "Next financial year" } },
130
- 'EN-NZ': { "skyux_date_range_picker_format_label_last_fiscal_year": { "message": "Last financial year" }, "skyux_date_range_picker_format_label_this_fiscal_year": { "message": "This financial year" }, "skyux_date_range_picker_format_label_next_fiscal_year": { "message": "Next financial year" } },
131
- 'EN-US': { "skyux_date_field_default_label": { "message": "Date" }, "skyux_datepicker_trigger_button_label": { "message": "Select date" }, "skyux_timepicker_button_label": { "message": "Choose time" }, "skyux_timepicker_close": { "message": "Done" }, "skyux_timepicker_input_default_label": { "message": "Time" }, "skyux_date_range_picker_default_label": { "message": "Select a date range" }, "skyux_date_range_picker_format_label_specific_range": { "message": "Specific range" }, "skyux_date_range_picker_format_label_before": { "message": "Before" }, "skyux_date_range_picker_format_label_after": { "message": "After" }, "skyux_date_range_picker_format_label_any_time": { "message": "At any time" }, "skyux_date_range_picker_format_label_yesterday": { "message": "Yesterday" }, "skyux_date_range_picker_format_label_today": { "message": "Today" }, "skyux_date_range_picker_format_label_tomorrow": { "message": "Tomorrow" }, "skyux_date_range_picker_format_label_last_week": { "message": "Last week" }, "skyux_date_range_picker_format_label_this_week": { "message": "This week" }, "skyux_date_range_picker_format_label_next_week": { "message": "Next week" }, "skyux_date_range_picker_format_label_last_month": { "message": "Last month" }, "skyux_date_range_picker_format_label_this_month": { "message": "This month" }, "skyux_date_range_picker_format_label_next_month": { "message": "Next month" }, "skyux_date_range_picker_format_label_last_quarter": { "message": "Last quarter" }, "skyux_date_range_picker_format_label_this_quarter": { "message": "This quarter" }, "skyux_date_range_picker_format_label_next_quarter": { "message": "Next quarter" }, "skyux_date_range_picker_format_label_last_calendar_year": { "message": "Last calendar year" }, "skyux_date_range_picker_format_label_this_calendar_year": { "message": "This calendar year" }, "skyux_date_range_picker_format_label_next_calendar_year": { "message": "Next calendar year" }, "skyux_date_range_picker_format_label_last_fiscal_year": { "message": "Last fiscal year" }, "skyux_date_range_picker_format_label_this_fiscal_year": { "message": "This fiscal year" }, "skyux_date_range_picker_format_label_next_fiscal_year": { "message": "Next fiscal year" }, "skyux_date_range_picker_start_date_label": { "message": "From date" }, "skyux_date_range_picker_end_date_label": { "message": "To date" }, "skyux_date_range_picker_before_date_label": { "message": "Before date" }, "skyux_date_range_picker_after_date_label": { "message": "After date" } },
131
+ 'EN-AU': {
132
+ skyux_date_range_picker_format_label_last_fiscal_year: {
133
+ message: 'Last financial year',
134
+ },
135
+ skyux_date_range_picker_format_label_this_fiscal_year: {
136
+ message: 'This financial year',
137
+ },
138
+ skyux_date_range_picker_format_label_next_fiscal_year: {
139
+ message: 'Next financial year',
140
+ },
141
+ },
142
+ 'EN-GB': {
143
+ skyux_date_range_picker_format_label_last_fiscal_year: {
144
+ message: 'Last financial year',
145
+ },
146
+ skyux_date_range_picker_format_label_this_fiscal_year: {
147
+ message: 'This financial year',
148
+ },
149
+ skyux_date_range_picker_format_label_next_fiscal_year: {
150
+ message: 'Next financial year',
151
+ },
152
+ },
153
+ 'EN-NZ': {
154
+ skyux_date_range_picker_format_label_last_fiscal_year: {
155
+ message: 'Last financial year',
156
+ },
157
+ skyux_date_range_picker_format_label_this_fiscal_year: {
158
+ message: 'This financial year',
159
+ },
160
+ skyux_date_range_picker_format_label_next_fiscal_year: {
161
+ message: 'Next financial year',
162
+ },
163
+ },
164
+ 'EN-US': {
165
+ skyux_date_field_default_label: { message: 'Date' },
166
+ skyux_datepicker_trigger_button_label: { message: 'Select date' },
167
+ skyux_timepicker_button_label: { message: 'Choose time' },
168
+ skyux_timepicker_close: { message: 'Done' },
169
+ skyux_timepicker_input_default_label: { message: 'Time' },
170
+ skyux_date_range_picker_default_label: { message: 'Select a date range' },
171
+ skyux_date_range_picker_format_label_specific_range: {
172
+ message: 'Specific range',
173
+ },
174
+ skyux_date_range_picker_format_label_before: { message: 'Before' },
175
+ skyux_date_range_picker_format_label_after: { message: 'After' },
176
+ skyux_date_range_picker_format_label_any_time: { message: 'At any time' },
177
+ skyux_date_range_picker_format_label_yesterday: { message: 'Yesterday' },
178
+ skyux_date_range_picker_format_label_today: { message: 'Today' },
179
+ skyux_date_range_picker_format_label_tomorrow: { message: 'Tomorrow' },
180
+ skyux_date_range_picker_format_label_last_week: { message: 'Last week' },
181
+ skyux_date_range_picker_format_label_this_week: { message: 'This week' },
182
+ skyux_date_range_picker_format_label_next_week: { message: 'Next week' },
183
+ skyux_date_range_picker_format_label_last_month: { message: 'Last month' },
184
+ skyux_date_range_picker_format_label_this_month: { message: 'This month' },
185
+ skyux_date_range_picker_format_label_next_month: { message: 'Next month' },
186
+ skyux_date_range_picker_format_label_last_quarter: {
187
+ message: 'Last quarter',
188
+ },
189
+ skyux_date_range_picker_format_label_this_quarter: {
190
+ message: 'This quarter',
191
+ },
192
+ skyux_date_range_picker_format_label_next_quarter: {
193
+ message: 'Next quarter',
194
+ },
195
+ skyux_date_range_picker_format_label_last_calendar_year: {
196
+ message: 'Last calendar year',
197
+ },
198
+ skyux_date_range_picker_format_label_this_calendar_year: {
199
+ message: 'This calendar year',
200
+ },
201
+ skyux_date_range_picker_format_label_next_calendar_year: {
202
+ message: 'Next calendar year',
203
+ },
204
+ skyux_date_range_picker_format_label_last_fiscal_year: {
205
+ message: 'Last fiscal year',
206
+ },
207
+ skyux_date_range_picker_format_label_this_fiscal_year: {
208
+ message: 'This fiscal year',
209
+ },
210
+ skyux_date_range_picker_format_label_next_fiscal_year: {
211
+ message: 'Next fiscal year',
212
+ },
213
+ skyux_date_range_picker_start_date_label: { message: 'From date' },
214
+ skyux_date_range_picker_end_date_label: { message: 'To date' },
215
+ skyux_date_range_picker_before_date_label: { message: 'Before date' },
216
+ skyux_date_range_picker_after_date_label: { message: 'After date' },
217
+ },
132
218
  };
133
219
  class SkyDatetimeResourcesProvider {
134
220
  getString(localeInfo, name) {
@@ -140,22 +226,26 @@ class SkyDatetimeResourcesProvider {
140
226
  */
141
227
  class SkyDatetimeResourcesModule {
142
228
  }
143
- SkyDatetimeResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatetimeResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
144
- SkyDatetimeResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatetimeResourcesModule, exports: [SkyI18nModule] });
145
- SkyDatetimeResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatetimeResourcesModule, providers: [{
229
+ SkyDatetimeResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatetimeResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
230
+ SkyDatetimeResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatetimeResourcesModule, exports: [SkyI18nModule] });
231
+ SkyDatetimeResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatetimeResourcesModule, providers: [
232
+ {
146
233
  provide: SKY_LIB_RESOURCES_PROVIDERS,
147
234
  useClass: SkyDatetimeResourcesProvider,
148
- multi: true
149
- }], imports: [SkyI18nModule] });
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatetimeResourcesModule, decorators: [{
235
+ multi: true,
236
+ },
237
+ ], imports: [SkyI18nModule] });
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatetimeResourcesModule, decorators: [{
151
239
  type: NgModule,
152
240
  args: [{
153
241
  exports: [SkyI18nModule],
154
- providers: [{
242
+ providers: [
243
+ {
155
244
  provide: SKY_LIB_RESOURCES_PROVIDERS,
156
245
  useClass: SkyDatetimeResourcesProvider,
157
- multi: true
158
- }]
246
+ multi: true,
247
+ },
248
+ ],
159
249
  }]
160
250
  }] });
161
251
 
@@ -166,7 +256,8 @@ class SkyFuzzyDateService {
166
256
  constructor(localeProvider) {
167
257
  this.localeProvider = localeProvider;
168
258
  this.ngUnsubscribe = new Subject();
169
- this.localeProvider.getLocaleInfo()
259
+ this.localeProvider
260
+ .getLocaleInfo()
170
261
  .pipe(takeUntil(this.ngUnsubscribe))
171
262
  .subscribe((localeInfo) => {
172
263
  this.currentLocale = localeInfo.locale;
@@ -241,7 +332,7 @@ class SkyFuzzyDateService {
241
332
  return;
242
333
  }
243
334
  const year = fuzzyDate.year || this.getDefaultYear(fuzzyDate);
244
- const month = fuzzyDate.month > 0 ? (fuzzyDate.month - 1) : 0;
335
+ const month = fuzzyDate.month > 0 ? fuzzyDate.month - 1 : 0;
245
336
  const day = fuzzyDate.day || 1;
246
337
  return moment([year, month, day]);
247
338
  }
@@ -260,10 +351,10 @@ class SkyFuzzyDateService {
260
351
  let dateComponents = [
261
352
  { value: fuzzyDate.year || 0, index: dateFormatIndexes.yearIndex },
262
353
  { value: fuzzyDate.month || 0, index: dateFormatIndexes.monthIndex },
263
- { value: fuzzyDate.day || 0, index: dateFormatIndexes.dayIndex }
354
+ { value: fuzzyDate.day || 0, index: dateFormatIndexes.dayIndex },
264
355
  ];
265
356
  dateComponents.sort((a, b) => a.index - b.index);
266
- dateComponents.forEach(component => {
357
+ dateComponents.forEach((component) => {
267
358
  if (component.value > 0 && component.index > -1) {
268
359
  if (dateString) {
269
360
  dateString += separator;
@@ -315,18 +406,33 @@ class SkyFuzzyDateService {
315
406
  // is the month. Otherwise, we can assume the input is mm/dd or mm/yy (2-digit year).
316
407
  year = this.get4DigitYearFromDateString(date);
317
408
  if (year) {
318
- month = dateComponents[0] === year.toString() ? dateComponents[1] : dateComponents[0];
409
+ month =
410
+ dateComponents[0] === year.toString()
411
+ ? dateComponents[1]
412
+ : dateComponents[0];
319
413
  }
320
414
  else {
321
415
  if (indexes.dayIndex > -1) {
322
416
  // mm/dd
323
- month = (indexes.monthIndex < indexes.dayIndex) ? dateComponents[0] : dateComponents[1];
324
- day = (month === dateComponents[1]) ? dateComponents[0] : dateComponents[1];
417
+ month =
418
+ indexes.monthIndex < indexes.dayIndex
419
+ ? dateComponents[0]
420
+ : dateComponents[1];
421
+ day =
422
+ month === dateComponents[1]
423
+ ? dateComponents[0]
424
+ : dateComponents[1];
325
425
  }
326
426
  else {
327
427
  // mm/yy
328
- month = (indexes.monthIndex < indexes.yearIndex) ? dateComponents[0] : dateComponents[1];
329
- year = (month === dateComponents[1]) ? dateComponents[0] : dateComponents[1];
428
+ month =
429
+ indexes.monthIndex < indexes.yearIndex
430
+ ? dateComponents[0]
431
+ : dateComponents[1];
432
+ year =
433
+ month === dateComponents[1]
434
+ ? dateComponents[0]
435
+ : dateComponents[1];
330
436
  }
331
437
  }
332
438
  break;
@@ -345,14 +451,21 @@ class SkyFuzzyDateService {
345
451
  // Check if day is valid.
346
452
  if (day) {
347
453
  day = parseInt(day, 10);
348
- let fuzzyMoment = this.getMomentFromFuzzyDate({ month: month, day: day, year: year });
454
+ let fuzzyMoment = this.getMomentFromFuzzyDate({
455
+ month: month,
456
+ day: day,
457
+ year: year,
458
+ });
349
459
  if (isNaN(day) || !fuzzyMoment.isValid()) {
350
460
  return;
351
461
  }
352
462
  }
353
463
  }
354
464
  if (year) {
355
- year = year.toString().length === 2 ? moment.parseTwoDigitYear(year) : parseInt(year.toString(), 10);
465
+ year =
466
+ year.toString().length === 2
467
+ ? moment.parseTwoDigitYear(year)
468
+ : parseInt(year.toString(), 10);
356
469
  if (isNaN(year) || year.toString().length !== 4) {
357
470
  return;
358
471
  }
@@ -360,7 +473,7 @@ class SkyFuzzyDateService {
360
473
  return {
361
474
  month: month,
362
475
  day: day,
363
- year: year
476
+ year: year,
364
477
  };
365
478
  }
366
479
  getFuzzyDateRange(startFuzzyDate, endFuzzyDate) {
@@ -370,7 +483,10 @@ class SkyFuzzyDateService {
370
483
  let months;
371
484
  let years;
372
485
  let valid = false;
373
- if (startFuzzyDate && startFuzzyDate.year && endFuzzyDate && endFuzzyDate.year) {
486
+ if (startFuzzyDate &&
487
+ startFuzzyDate.year &&
488
+ endFuzzyDate &&
489
+ endFuzzyDate.year) {
374
490
  start = this.getMomentFromFuzzyDate(startFuzzyDate);
375
491
  end = this.getMomentFromFuzzyDate(endFuzzyDate);
376
492
  years = end.diff(start, 'years');
@@ -382,7 +498,7 @@ class SkyFuzzyDateService {
382
498
  years: years,
383
499
  months: months,
384
500
  days: days,
385
- valid: valid
501
+ valid: valid,
386
502
  };
387
503
  }
388
504
  getCurrentFuzzyDate() {
@@ -390,7 +506,7 @@ class SkyFuzzyDateService {
390
506
  return {
391
507
  day: currentDate.date(),
392
508
  month: currentDate.month() + 1,
393
- year: currentDate.year()
509
+ year: currentDate.year(),
394
510
  };
395
511
  }
396
512
  getMostRecentLeapYear() {
@@ -408,7 +524,7 @@ class SkyFuzzyDateService {
408
524
  getDateSeparator(dateFormat) {
409
525
  let returnValue;
410
526
  let separators = ['/', '.', '-', ' '];
411
- separators.forEach(separator => {
527
+ separators.forEach((separator) => {
412
528
  if (!returnValue && dateFormat.indexOf(separator) > 0) {
413
529
  returnValue = separator;
414
530
  }
@@ -419,7 +535,7 @@ class SkyFuzzyDateService {
419
535
  let year;
420
536
  const separator = this.getDateSeparator(date);
421
537
  // Find the number value in the string that is 4 digits long.
422
- date.split(separator).forEach(dateComponent => {
538
+ date.split(separator).forEach((dateComponent) => {
423
539
  if (!year && parseInt(dateComponent, 10).toString().length === 4) {
424
540
  year = dateComponent;
425
541
  }
@@ -429,7 +545,7 @@ class SkyFuzzyDateService {
429
545
  }
430
546
  }
431
547
  isLeapYear(year) {
432
- return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);
548
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
433
549
  }
434
550
  getMonthNumber(month) {
435
551
  let returnValue;
@@ -469,7 +585,7 @@ class SkyFuzzyDateService {
469
585
  return {
470
586
  yearIndex: dateFormat.indexOf('y'),
471
587
  monthIndex: dateFormat.indexOf('m'),
472
- dayIndex: dateFormat.indexOf('d')
588
+ dayIndex: dateFormat.indexOf('d'),
473
589
  };
474
590
  }
475
591
  // Returns the index of each of the date components in the provided string (month, day, year).
@@ -485,11 +601,13 @@ class SkyFuzzyDateService {
485
601
  if (dateFormatIndexes.dayIndex > -1) {
486
602
  dateComponentIndexes.push(dateFormatIndexes.dayIndex);
487
603
  }
488
- dateComponentIndexes.sort(function (a, b) { return a - b; });
604
+ dateComponentIndexes.sort(function (a, b) {
605
+ return a - b;
606
+ });
489
607
  return {
490
608
  yearIndex: dateComponentIndexes.indexOf(dateFormatIndexes.yearIndex),
491
609
  monthIndex: dateComponentIndexes.indexOf(dateFormatIndexes.monthIndex),
492
- dayIndex: dateComponentIndexes.indexOf(dateFormatIndexes.dayIndex)
610
+ dayIndex: dateComponentIndexes.indexOf(dateFormatIndexes.dayIndex),
493
611
  };
494
612
  }
495
613
  /**
@@ -518,12 +636,12 @@ class SkyFuzzyDateService {
518
636
  return true;
519
637
  }
520
638
  }
521
- SkyFuzzyDateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDateService, deps: [{ token: i3.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Injectable });
522
- SkyFuzzyDateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDateService, providedIn: 'root' });
523
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDateService, decorators: [{
639
+ SkyFuzzyDateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDateService, deps: [{ token: i3.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Injectable });
640
+ SkyFuzzyDateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDateService, providedIn: 'root' });
641
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDateService, decorators: [{
524
642
  type: Injectable,
525
643
  args: [{
526
- providedIn: 'root'
644
+ providedIn: 'root',
527
645
  }]
528
646
  }], ctorParameters: function () { return [{ type: i3.SkyAppLocaleProvider }]; } });
529
647
 
@@ -560,49 +678,28 @@ class SkyFuzzyDatePipe {
560
678
  return this.fuzzyDateService.format(value, fuzzyDateFormat, fuzzyDateLocale);
561
679
  }
562
680
  }
563
- SkyFuzzyDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDatePipe, deps: [{ token: SkyFuzzyDateService }], target: i0.ɵɵFactoryTarget.Pipe });
564
- SkyFuzzyDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDatePipe, name: "skyFuzzyDate", pure: false });
565
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDatePipe, decorators: [{
681
+ SkyFuzzyDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDatePipe, deps: [{ token: SkyFuzzyDateService }], target: i0.ɵɵFactoryTarget.Pipe });
682
+ SkyFuzzyDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDatePipe, name: "skyFuzzyDate", pure: false });
683
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDatePipe, decorators: [{
566
684
  type: Pipe,
567
685
  args: [{
568
686
  name: 'skyFuzzyDate',
569
- pure: false
687
+ pure: false,
570
688
  }]
571
689
  }], ctorParameters: function () { return [{ type: SkyFuzzyDateService }]; } });
572
690
 
573
691
  class SkyDatePipeModule {
574
692
  }
575
- SkyDatePipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
576
- SkyDatePipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipeModule, declarations: [SkyDatePipe,
577
- SkyFuzzyDatePipe], imports: [CommonModule,
578
- SkyDatetimeResourcesModule], exports: [SkyDatePipe,
579
- SkyFuzzyDatePipe] });
580
- SkyDatePipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipeModule, providers: [
581
- SkyDatePipe,
582
- SkyFuzzyDatePipe
583
- ], imports: [[
584
- CommonModule,
585
- SkyDatetimeResourcesModule
586
- ]] });
587
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatePipeModule, decorators: [{
693
+ SkyDatePipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
694
+ SkyDatePipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipeModule, declarations: [SkyDatePipe, SkyFuzzyDatePipe], imports: [CommonModule, SkyDatetimeResourcesModule], exports: [SkyDatePipe, SkyFuzzyDatePipe] });
695
+ SkyDatePipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipeModule, providers: [SkyDatePipe, SkyFuzzyDatePipe], imports: [[CommonModule, SkyDatetimeResourcesModule]] });
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatePipeModule, decorators: [{
588
697
  type: NgModule,
589
698
  args: [{
590
- declarations: [
591
- SkyDatePipe,
592
- SkyFuzzyDatePipe
593
- ],
594
- providers: [
595
- SkyDatePipe,
596
- SkyFuzzyDatePipe
597
- ],
598
- imports: [
599
- CommonModule,
600
- SkyDatetimeResourcesModule
601
- ],
602
- exports: [
603
- SkyDatePipe,
604
- SkyFuzzyDatePipe
605
- ]
699
+ declarations: [SkyDatePipe, SkyFuzzyDatePipe],
700
+ providers: [SkyDatePipe, SkyFuzzyDatePipe],
701
+ imports: [CommonModule, SkyDatetimeResourcesModule],
702
+ exports: [SkyDatePipe, SkyFuzzyDatePipe],
606
703
  }]
607
704
  }] });
608
705
 
@@ -772,9 +869,9 @@ class SkyDatepickerAdapterService {
772
869
  this.renderer.setAttribute(elementRef.nativeElement, 'placeholder', value);
773
870
  }
774
871
  }
775
- SkyDatepickerAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerAdapterService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
776
- SkyDatepickerAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerAdapterService });
777
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerAdapterService, decorators: [{
872
+ SkyDatepickerAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerAdapterService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
873
+ SkyDatepickerAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerAdapterService });
874
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerAdapterService, decorators: [{
778
875
  type: Injectable
779
876
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
780
877
 
@@ -790,7 +887,8 @@ class SkyDateFormatter {
790
887
  */
791
888
  static getPreferredShortDateFormat() {
792
889
  /* istanbul ignore next */
793
- return moment.localeData().longDateFormat('L') || SkyDateFormatter.defaultShortDateFormat;
890
+ return (moment.localeData().longDateFormat('L') ||
891
+ SkyDateFormatter.defaultShortDateFormat);
794
892
  }
795
893
  format(date, format) {
796
894
  return moment(date.getTime()).format(format);
@@ -850,8 +948,9 @@ class SkyDatepickerCalendarInnerComponent {
850
948
  37: 'left',
851
949
  38: 'up',
852
950
  39: 'right',
853
- 40: 'down'
951
+ 40: 'down',
854
952
  };
953
+ this.ngUnsubscribe = new Subject();
855
954
  }
856
955
  set selectedDate(value) {
857
956
  if (this.dateFormatter.dateIsValid(value)) {
@@ -873,6 +972,10 @@ class SkyDatepickerCalendarInnerComponent {
873
972
  ngOnChanges(changes) {
874
973
  this.refreshView();
875
974
  }
975
+ ngOnDestroy() {
976
+ this.ngUnsubscribe.next();
977
+ this.ngUnsubscribe.complete();
978
+ }
876
979
  setCompareHandler(handler, type) {
877
980
  if (type === 'day') {
878
981
  this.compareHandlerDay = handler;
@@ -976,6 +1079,7 @@ class SkyDatepickerCalendarInnerComponent {
976
1079
  }
977
1080
  }
978
1081
  createDateObject(date, format, isSecondary, id) {
1082
+ const customDateMatch = this.getCustomDate(date);
979
1083
  let dateObject = {
980
1084
  date: new Date(date.getFullYear(), date.getMonth(), date.getDate()),
981
1085
  label: this.dateFilter(date, format),
@@ -983,7 +1087,9 @@ class SkyDatepickerCalendarInnerComponent {
983
1087
  disabled: this.isDisabled(date),
984
1088
  current: this.compare(date, new Date()) === 0,
985
1089
  secondary: isSecondary,
986
- uid: id
1090
+ uid: id,
1091
+ keyDate: customDateMatch ? customDateMatch.keyDate : undefined,
1092
+ keyDateText: customDateMatch ? customDateMatch.keyDateText : [],
987
1093
  };
988
1094
  return dateObject;
989
1095
  }
@@ -1022,7 +1128,8 @@ class SkyDatepickerCalendarInnerComponent {
1022
1128
  }
1023
1129
  }
1024
1130
  else {
1025
- this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];
1131
+ this.datepickerMode =
1132
+ this.modes[this.modes.indexOf(this.datepickerMode) - 1];
1026
1133
  this.calendarModeChange.emit(this.datepickerMode);
1027
1134
  }
1028
1135
  this.refreshView();
@@ -1046,8 +1153,8 @@ class SkyDatepickerCalendarInnerComponent {
1046
1153
  /* istanbul ignore else */
1047
1154
  /* sanity check */
1048
1155
  if (expectedStep) {
1049
- let year = this.activeDate.getFullYear() + (direction * (expectedStep.years || 0));
1050
- let month = this.activeDate.getMonth() + (direction * (expectedStep.months || 0));
1156
+ let year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);
1157
+ let month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);
1051
1158
  this.activeDate = new Date(year, month, 1);
1052
1159
  this.refreshView();
1053
1160
  }
@@ -1064,27 +1171,44 @@ class SkyDatepickerCalendarInnerComponent {
1064
1171
  /* sanity check */
1065
1172
  if (!(direction === 1 && this.datepickerMode === this.maxMode) &&
1066
1173
  !(this.datepickerMode === this.minMode && direction === -1)) {
1067
- this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];
1174
+ this.datepickerMode =
1175
+ this.modes[this.modes.indexOf(this.datepickerMode) + direction];
1068
1176
  this.calendarModeChange.emit(this.datepickerMode);
1069
1177
  this.refreshView();
1070
1178
  }
1071
1179
  }
1180
+ /**
1181
+ * Date is disabled if it meets any of these criteria:
1182
+ * 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.
1183
+ * 2. Date is marked as disabled in the customDates array.
1184
+ */
1072
1185
  isDisabled(date) {
1073
- return ((this.minDate && this.compare(date, this.minDate) < 0)
1074
- || (this.maxDate && this.compare(date, this.maxDate) > 0));
1186
+ const customDate = this.getCustomDate(date);
1187
+ return ((this.minDate && this.compare(date, this.minDate) < 0) ||
1188
+ (this.maxDate && this.compare(date, this.maxDate) > 0) ||
1189
+ (customDate && customDate.disabled));
1190
+ }
1191
+ getCustomDate(date) {
1192
+ if (this.customDates) {
1193
+ return this.customDates.find((customDate) => {
1194
+ return customDate.date.getTime() === date.getTime();
1195
+ });
1196
+ }
1075
1197
  }
1076
1198
  }
1077
- SkyDatepickerCalendarInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1078
- SkyDatepickerCalendarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: { startingDay: "startingDay", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\">\n <ng-content></ng-content>\n</div>\n", styles: [".sky-datepicker-calendar-inner{border-radius:5px;background-color:#fff;border-top:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;border-right:1px solid #e2e3e4}.sky-datepicker-calendar-inner .sky-btn-default{border-color:transparent;border:2px solid #ffffff}.sky-datepicker-calendar-inner .sky-btn-default:hover{border-color:#eeeeef}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:#c1e8fb;border:2px solid #00b4f1}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:none}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:#686c73}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-chevron-modern{display:none}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-theme-modern .sky-datepicker-calendar-inner{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px;padding:5px 10px}.sky-theme-modern .sky-datepicker-calendar-inner:focus-within{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default{border:none;box-shadow:inset 0 0 0 1px transparent;padding:5px 7px}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-active,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-btn-sm.sky-datepicker-btn-date{height:30px;min-width:0;padding:0;width:30px}.sky-theme-modern .sky-datepicker-chevron-default{display:none}.sky-theme-modern .sky-datepicker-chevron-modern{display:inline;font-size:16px}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner:not(:focus-within){border:none;box-shadow:inset 0 0 0 1px #686c73}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner .sky-datepicker-btn-selected{background-color:#009cd1}\n"], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
1079
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{
1199
+ SkyDatepickerCalendarInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1200
+ SkyDatepickerCalendarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: { customDates: "customDates", startingDay: "startingDay", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-datepicker-calendar-inner{border-radius:5px;background-color:#fff;border-top:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;border-right:1px solid #e2e3e4}.sky-datepicker-calendar-inner .sky-btn-default{border-color:transparent;border:2px solid #ffffff}.sky-datepicker-calendar-inner .sky-btn-default:hover{border-color:#eeeeef}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:#c1e8fb;border:2px solid #00b4f1}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:none}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:#686c73}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-chevron-modern{display:none}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-theme-modern .sky-datepicker-calendar-inner{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px;padding:5px 10px}.sky-theme-modern .sky-datepicker-calendar-inner:focus-within{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default{border:none;box-shadow:inset 0 0 0 1px transparent;padding:5px 7px}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-active,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-btn-sm.sky-datepicker-btn-date{height:30px;min-width:0;padding:0;width:30px}.sky-theme-modern .sky-datepicker-chevron-default{display:none}.sky-theme-modern .sky-datepicker-chevron-modern{display:inline;font-size:16px}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner:not(:focus-within){border:none;box-shadow:inset 0 0 0 1px #686c73}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner .sky-datepicker-btn-selected{background-color:#009cd1}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
1201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{
1080
1202
  type: Component,
1081
1203
  args: [{
1082
1204
  selector: 'sky-datepicker-inner',
1083
1205
  templateUrl: './datepicker-calendar-inner.component.html',
1084
1206
  styleUrls: ['./datepicker-calendar-inner.component.scss'],
1085
- encapsulation: ViewEncapsulation.None
1207
+ encapsulation: ViewEncapsulation.None,
1086
1208
  }]
1087
- }], propDecorators: { startingDay: [{
1209
+ }], propDecorators: { customDates: [{
1210
+ type: Input
1211
+ }], startingDay: [{
1088
1212
  type: Input
1089
1213
  }], minDate: [{
1090
1214
  type: Input
@@ -1108,28 +1232,198 @@ class SkyDatepickerConfigService {
1108
1232
  this.startingDay = 0;
1109
1233
  }
1110
1234
  }
1111
- SkyDatepickerConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1112
- SkyDatepickerConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerConfigService, providedIn: 'root' });
1113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerConfigService, decorators: [{
1235
+ SkyDatepickerConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1236
+ SkyDatepickerConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerConfigService, providedIn: 'root' });
1237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerConfigService, decorators: [{
1114
1238
  type: Injectable,
1115
1239
  args: [{
1116
- providedIn: 'root'
1240
+ providedIn: 'root',
1117
1241
  }]
1118
1242
  }] });
1119
1243
 
1244
+ /**
1245
+ * @internal
1246
+ */
1247
+ class SkyDatepickerService {
1248
+ constructor() {
1249
+ /**
1250
+ * Specifies if a key date popover is currently displayed.
1251
+ * Useful for communicating across all daypicker siblings when a popover is displayed.
1252
+ */
1253
+ this.keyDatePopoverStream = new Subject();
1254
+ }
1255
+ }
1256
+ SkyDatepickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1257
+ SkyDatepickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerService });
1258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerService, decorators: [{
1259
+ type: Injectable
1260
+ }] });
1261
+
1262
+ /**
1263
+ * @internal
1264
+ */
1265
+ class SkyDayPickerButtonComponent {
1266
+ constructor(datepicker) {
1267
+ this.datepicker = datepicker;
1268
+ }
1269
+ }
1270
+ SkyDayPickerButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDayPickerButtonComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1271
+ SkyDayPickerButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: { date: "date" }, ngImport: i0, template: "<button\n class=\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"date.disabled\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date),\n 'sky-datepicker-btn-disabled': date.disabled,\n 'sky-datepicker-btn-key-date': date.keyDate\n }\"\n (click)=\"datepicker.selectCalendar($event, date.date, true)\"\n>\n <span [ngClass]=\"{ 'sky-datepicker-secondary': date.secondary }\">\n {{ date.label }}\n </span>\n</button>\n", styles: [".sky-datepicker-btn-disabled{font-style:italic}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date:before{position:absolute;content:\"\";height:5px;width:5px;background-color:#d93a3d;border-radius:50%;left:15px;top:22px}:host-context(.sky-theme-modern) .sky-datepicker-btn-key-date:before{left:12px}.sky-theme-modern .sky-datepicker-btn-key-date:before{left:12px}\n"], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDayPickerButtonComponent, decorators: [{
1273
+ type: Component,
1274
+ args: [{
1275
+ selector: 'sky-daypicker-button',
1276
+ templateUrl: 'daypicker-button.component.html',
1277
+ styleUrls: ['./daypicker-button.component.scss'],
1278
+ }]
1279
+ }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { date: [{
1280
+ type: Input
1281
+ }] } });
1282
+
1283
+ /**
1284
+ * @internal
1285
+ */
1286
+ class SkyDayPickerCellComponent {
1287
+ constructor(datepicker, datepickerService) {
1288
+ this.datepicker = datepicker;
1289
+ this.datepickerService = datepickerService;
1290
+ this.hasTooltip = false;
1291
+ this.popoverController = new Subject();
1292
+ this.activeUid = '';
1293
+ this.cancelPopover = false;
1294
+ this.popoverOpen = false;
1295
+ this.ngUnsubscribe = new Subject();
1296
+ }
1297
+ ngOnInit() {
1298
+ this.hasTooltip =
1299
+ this.date.keyDate &&
1300
+ this.date.keyDateText &&
1301
+ this.date.keyDateText.length > 0 &&
1302
+ this.date.keyDateText[0].length > 0;
1303
+ // show the tooltip if this is the active date and is not the
1304
+ // initial active date (activeDateHasChanged)
1305
+ if (this.datepicker.isActive(this.date) &&
1306
+ this.activeDateHasChanged &&
1307
+ this.hasTooltip) {
1308
+ this.activeUid = this.date.uid;
1309
+ this.showTooltip();
1310
+ }
1311
+ if (this.hasTooltip) {
1312
+ this.datepickerService.keyDatePopoverStream
1313
+ .pipe(takeUntil(this.ngUnsubscribe))
1314
+ .subscribe((date) => {
1315
+ if (date) {
1316
+ this.activeUid = date.uid;
1317
+ }
1318
+ else {
1319
+ this.activeUid = '';
1320
+ }
1321
+ // If this day has an open popover and they have moved off of the day close the popover.
1322
+ if (this.date.uid !== this.activeUid) {
1323
+ this.hideTooltip();
1324
+ }
1325
+ });
1326
+ }
1327
+ }
1328
+ ngOnDestroy() {
1329
+ this.ngUnsubscribe.next();
1330
+ this.ngUnsubscribe.complete();
1331
+ }
1332
+ onDayMouseenter() {
1333
+ this.cancelPopover = false;
1334
+ if (this.hasTooltip) {
1335
+ this.showTooltip();
1336
+ this.datepickerService.keyDatePopoverStream.next(this.date);
1337
+ }
1338
+ }
1339
+ onDayMouseleave() {
1340
+ this.cancelPopover = true;
1341
+ if (this.hasTooltip) {
1342
+ this.hideTooltip();
1343
+ }
1344
+ this.datepickerService.keyDatePopoverStream.next(undefined);
1345
+ }
1346
+ onPopoverClosed() {
1347
+ this.popoverOpen = false;
1348
+ }
1349
+ onPopoverOpened() {
1350
+ this.popoverOpen = true;
1351
+ /* istanbul ignore else */
1352
+ if (this.cancelPopover) {
1353
+ // If the popover gets opened just as a mouseout event happens, close it.
1354
+ this.hideTooltip();
1355
+ this.cancelPopover = false;
1356
+ }
1357
+ }
1358
+ getKeyDateLabel() {
1359
+ if (this.hasTooltip) {
1360
+ return this.date.keyDateText.join(', ');
1361
+ }
1362
+ else {
1363
+ return '';
1364
+ }
1365
+ }
1366
+ hideTooltip() {
1367
+ /* istanbul ignore else */
1368
+ if (this.popoverOpen) {
1369
+ this.popoverController.next({ type: SkyPopoverMessageType.Close });
1370
+ }
1371
+ }
1372
+ showTooltip() {
1373
+ /* istanbul ignore else */
1374
+ if (this.hasTooltip && !this.popoverOpen) {
1375
+ /**
1376
+ * Delay 1/2 second before opening the popover as long as mouse hasn't moved off the date.
1377
+ */
1378
+ setTimeout(() => {
1379
+ if (!this.cancelPopover && this.activeUid === this.date.uid) {
1380
+ this.popoverController.next({ type: SkyPopoverMessageType.Open });
1381
+ }
1382
+ }, 500);
1383
+ }
1384
+ }
1385
+ }
1386
+ SkyDayPickerCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDayPickerCellComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }, { token: SkyDatepickerService }], target: i0.ɵɵFactoryTarget.Component });
1387
+ SkyDayPickerCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: { activeDateHasChanged: "activeDateHasChanged", date: "date" }, ngImport: i0, template: "<div\n *ngIf=\"hasTooltip\"\n class=\"sky-daypicker-cell\"\n [attr.aria-label]=\"getKeyDateLabel()\"\n [skyPopover]=\"dayInfoPopover\"\n skyPopoverPlacement=\"left\"\n [skyPopoverMessageStream]=\"popoverController\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n>\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\"></ng-container>\n <sky-popover\n (popoverClosed)=\"onPopoverClosed()\"\n (popoverOpened)=\"onPopoverOpened()\"\n #dayInfoPopover\n >\n <div *ngFor=\"let text of date.keyDateText\">\n {{ text }}\n </div>\n </sky-popover>\n</div>\n<div\n *ngIf=\"!hasTooltip\"\n class=\"sky-daypicker-cell\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n>\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\"></ng-container>\n</div>\n\n<ng-template #daypickerButtonTemplateRef>\n <sky-daypicker-button [date]=\"date\"> </sky-daypicker-button>\n</ng-template>\n", components: [{ type: i3$1.λ6, selector: "sky-popover", inputs: ["alignment", "dismissOnBlur", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { type: SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: ["date"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDayPickerCellComponent, decorators: [{
1389
+ type: Component,
1390
+ args: [{
1391
+ selector: 'sky-daypicker-cell',
1392
+ templateUrl: 'daypicker-cell.component.html',
1393
+ changeDetection: ChangeDetectionStrategy.OnPush,
1394
+ }]
1395
+ }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }, { type: SkyDatepickerService }]; }, propDecorators: { activeDateHasChanged: [{
1396
+ type: Input
1397
+ }], date: [{
1398
+ type: Input
1399
+ }] } });
1400
+
1120
1401
  /**
1121
1402
  * @internal
1122
1403
  */
1123
1404
  class SkyDayPickerComponent {
1124
1405
  constructor(datepicker) {
1406
+ this.calendarDateRangeChange = new EventEmitter();
1407
+ this.isWaiting = false;
1408
+ this.activeDateHasChanged = false;
1125
1409
  this.labels = [];
1126
1410
  this.rows = [];
1127
1411
  this.weekNumbers = [];
1128
- this.daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
1412
+ this.daysInMonth = [
1413
+ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
1414
+ ];
1415
+ this.ngUnsubscribe = new Subject();
1129
1416
  this.datepicker = datepicker;
1130
1417
  }
1418
+ set customDates(value) {
1419
+ /* istanbul ignore else */
1420
+ if (value) {
1421
+ this.applyCustomDates(value, this.rows);
1422
+ }
1423
+ }
1131
1424
  ngOnInit() {
1132
1425
  this.datepicker.stepDay = { months: 1 };
1426
+ this.initialDate = this.datepicker.activeDate.getDate();
1133
1427
  this.datepicker.setRefreshViewHandler(() => {
1134
1428
  this.refreshDayView();
1135
1429
  }, 'day');
@@ -1139,6 +1433,10 @@ class SkyDayPickerComponent {
1139
1433
  }, 'day');
1140
1434
  this.datepicker.refreshView();
1141
1435
  }
1436
+ ngOnDestroy() {
1437
+ this.ngUnsubscribe.next();
1438
+ this.ngUnsubscribe.complete();
1439
+ }
1142
1440
  getDates(startDate, n) {
1143
1441
  let dates = new Array(n);
1144
1442
  let current = new Date(startDate.getTime());
@@ -1162,10 +1460,11 @@ class SkyDayPickerComponent {
1162
1460
  let month = this.datepicker.activeDate.getMonth();
1163
1461
  let firstDayOfMonth = new Date(year, month, 1);
1164
1462
  let difference = this.datepicker.startingDay - firstDayOfMonth.getDay();
1165
- let numDisplayedFromPreviousMonth = (difference > 0)
1166
- ? 7 - difference
1167
- : -difference;
1463
+ let numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;
1168
1464
  let firstDate = new Date(firstDayOfMonth.getTime());
1465
+ if (this.datepicker.activeDate.getDate() !== this.initialDate) {
1466
+ this.activeDateHasChanged = true;
1467
+ }
1169
1468
  /* istanbul ignore else */
1170
1469
  /* sanity check */
1171
1470
  if (numDisplayedFromPreviousMonth > 0) {
@@ -1181,13 +1480,19 @@ class SkyDayPickerComponent {
1181
1480
  this.labels = [];
1182
1481
  for (let j = 0; j < 7; j++) {
1183
1482
  this.labels[j] = {};
1184
- this.labels[j].abbr =
1185
- this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
1483
+ this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
1186
1484
  this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
1187
1485
  }
1188
- this.title =
1189
- this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
1486
+ this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
1487
+ const oldDateRange = this.getDateRange(this.rows);
1190
1488
  this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
1489
+ const newDateRange = this.getDateRange(this.rows);
1490
+ if (!this.dateRangeRowsAreEqual(oldDateRange, newDateRange)) {
1491
+ this.calendarDateRangeChange.next({
1492
+ startDate: newDateRange.startDate,
1493
+ endDate: newDateRange.endDate,
1494
+ });
1495
+ }
1191
1496
  }
1192
1497
  keydownDays(key, event) {
1193
1498
  let date = this.datepicker.activeDate.getDate();
@@ -1208,8 +1513,7 @@ class SkyDayPickerComponent {
1208
1513
  else if (key === 'pageup' || key === 'pagedown') {
1209
1514
  let month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
1210
1515
  this.datepicker.activeDate.setMonth(month, 1);
1211
- date =
1212
- Math.min(this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
1516
+ date = Math.min(this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
1213
1517
  }
1214
1518
  else if (key === 'home') {
1215
1519
  date = 1;
@@ -1220,20 +1524,86 @@ class SkyDayPickerComponent {
1220
1524
  this.datepicker.activeDate.setDate(date);
1221
1525
  }
1222
1526
  getDaysInMonth(year, month) {
1223
- return month === 1 && year % 4 === 0 &&
1224
- (year % 400 === 0 || year % 100 !== 0) ? 29 : this.daysInMonth[month];
1527
+ return month === 1 &&
1528
+ year % 4 === 0 &&
1529
+ (year % 400 === 0 || year % 100 !== 0)
1530
+ ? 29
1531
+ : this.daysInMonth[month];
1532
+ }
1533
+ /**
1534
+ * Applies custom date properties to the existing dates displayed in the calendar.
1535
+ */
1536
+ applyCustomDates(customDates, dateRows) {
1537
+ let date;
1538
+ let newDate;
1539
+ let dateIndex;
1540
+ /* istanbul ignore else */
1541
+ if (customDates && dateRows) {
1542
+ customDates.forEach((customDate) => {
1543
+ dateIndex = -1;
1544
+ dateRows.forEach((row) => {
1545
+ if (dateIndex === -1) {
1546
+ dateIndex = row.findIndex((d) => {
1547
+ return d.date.getTime() === customDate.date.getTime();
1548
+ });
1549
+ if (dateIndex > -1) {
1550
+ date = row[dateIndex];
1551
+ // Replace the date with a new instance so the display gets updated.
1552
+ newDate = {
1553
+ current: date.current,
1554
+ date: date.date,
1555
+ disabled: !!date.disabled || !!customDate.disabled,
1556
+ keyDate: !!customDate.keyDate || !!date.keyDate,
1557
+ keyDateText: customDate.keyDateText || date.keyDateText,
1558
+ label: date.label,
1559
+ secondary: date.secondary,
1560
+ selected: date.selected,
1561
+ uid: date.uid,
1562
+ };
1563
+ row[dateIndex] = newDate;
1564
+ }
1565
+ }
1566
+ });
1567
+ });
1568
+ }
1569
+ }
1570
+ dateRangeRowsAreEqual(rangeA, rangeB) {
1571
+ /* istanbul ignore if */
1572
+ if (!rangeA && !rangeB) {
1573
+ return true;
1574
+ }
1575
+ else if ((rangeA && !rangeB) || (!rangeA && rangeB)) {
1576
+ return false;
1577
+ }
1578
+ return (this.compareDays(rangeA.startDate, rangeB.startDate) === 0 &&
1579
+ this.compareDays(rangeA.endDate, rangeB.endDate) === 0);
1580
+ }
1581
+ getDateRange(rows) {
1582
+ /* istanbul ignore else */
1583
+ if (rows && rows.length > 0) {
1584
+ return {
1585
+ startDate: rows[0][0].date,
1586
+ endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
1587
+ };
1588
+ }
1225
1589
  }
1226
1590
  }
1227
- SkyDayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1228
- SkyDayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDayPickerComponent, selector: "sky-daypicker", ngImport: i0, template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\"\n class=\"sky-daypicker-wrapper\"\n>\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId+'-title'\"\n >\n <thead>\n <tr>\n <th\n class=\"sky-datepicker-header-left\"\n scope=\"col\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n scope=\"col\"\n [attr.colspan]=\"5\"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{'sky-btn-disabled': datepicker.datepickerMode === datepicker.maxMode}\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{title}}</strong>\n </button>\n </th>\n <th\n class=\"sky-datepicker-header-right\"\n scope=\"col\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\">\n <small [attr.aria-label]=\"label.full\">\n <b>{{label.abbr}}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template\n ngFor\n [ngForOf]=\"rows\"\n let-row=\"$implicit\"\n let-index=\"index\"\n >\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{ 'sky-datepicker-btn-selected': date.selected, 'sky-btn-disabled': date.disabled, 'sky-btn-active': datepicker.isActive(date)}\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date, true)\"\n tabindex=\"-1\"\n >\n <span\n [ngClass]=\"{'sky-datepicker-secondary': date.secondary }\"\n >{{date.label}}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
1591
+ SkyDayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1592
+ SkyDayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0, template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"\n sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\n \"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"\n sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\n \"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i2.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
1230
1594
  type: Component,
1231
1595
  args: [{
1232
1596
  selector: 'sky-daypicker',
1233
1597
  templateUrl: 'daypicker.component.html',
1234
- styleUrls: ['./daypicker.component.scss']
1598
+ styleUrls: ['./daypicker.component.scss'],
1235
1599
  }]
1236
- }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; } });
1600
+ }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { customDates: [{
1601
+ type: Input
1602
+ }], calendarDateRangeChange: [{
1603
+ type: Output
1604
+ }], isWaiting: [{
1605
+ type: Input
1606
+ }] } });
1237
1607
 
1238
1608
  /**
1239
1609
  * @internal
@@ -1245,7 +1615,7 @@ class SkyMonthPickerComponent {
1245
1615
  }
1246
1616
  ngOnInit() {
1247
1617
  this.datepicker.stepMonth = {
1248
- years: 1
1618
+ years: 1,
1249
1619
  };
1250
1620
  this.datepicker.setRefreshViewHandler(() => {
1251
1621
  this.refreshMonthView();
@@ -1268,11 +1638,9 @@ class SkyMonthPickerComponent {
1268
1638
  for (let i = 0; i < 12; i++) {
1269
1639
  date = new Date(year, i, 1);
1270
1640
  date = this.datepicker.fixTimeZone(date);
1271
- months[i] =
1272
- this.datepicker.createDateObject(date, this.datepicker.formatMonth, false, this.datepicker.datepickerId + '-' + i);
1641
+ months[i] = this.datepicker.createDateObject(date, this.datepicker.formatMonth, false, this.datepicker.datepickerId + '-' + i);
1273
1642
  }
1274
- this.title =
1275
- this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatMonthTitle);
1643
+ this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatMonthTitle);
1276
1644
  this.rows = this.datepicker.createCalendarRows(months, this.datepicker.monthColLimit);
1277
1645
  }
1278
1646
  keydownMonths(key, event) {
@@ -1304,14 +1672,14 @@ class SkyMonthPickerComponent {
1304
1672
  this.datepicker.activeDate.setMonth(date);
1305
1673
  }
1306
1674
  }
1307
- SkyMonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyMonthPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1308
- SkyMonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyMonthPickerComponent, selector: "sky-monthpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th\n class=\"sky-datepicker-header-left\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button></th>\n <th [attr.colspan]=\"((datepicker.monthColLimit - 2) <= 0) ? 1 : datepicker.monthColLimit - 2\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === maxMode\"\n [ngClass]=\"{'sky-btn-disabled': datepicker.datepickerMode === maxMode}\"\n tabindex=\"-1\"\n >\n <strong>{{title}}</strong>\n </button>\n </th>\n <th\n class=\"sky-datepicker-header-right\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td\n *ngFor=\"let date of row\"\n class=\"text-center\"\n role=\"gridcell\"\n id=\"{{date.uid}}\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{'sky-datepicker-btn-selected': date.selected, 'sky-btn-disabled': date.disabled, 'sky-btn-active': datepicker.isActive(date)}\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{'sky-datepicker-current': date.current}\">{{date.label}}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyMonthPickerComponent, decorators: [{
1675
+ SkyMonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyMonthPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1676
+ SkyMonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyMonthPickerComponent, selector: "sky-monthpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.monthColLimit - 2 <= 0 ? 1 : datepicker.monthColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"\n sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\n \"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td\n *ngFor=\"let date of row\"\n class=\"text-center\"\n role=\"gridcell\"\n id=\"{{ date.uid }}\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyMonthPickerComponent, decorators: [{
1310
1678
  type: Component,
1311
1679
  args: [{
1312
1680
  selector: 'sky-monthpicker',
1313
1681
  templateUrl: 'monthpicker.component.html',
1314
- styleUrls: ['./monthpicker.component.scss']
1682
+ styleUrls: ['./monthpicker.component.scss'],
1315
1683
  }]
1316
1684
  }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; } });
1317
1685
 
@@ -1335,7 +1703,9 @@ class SkyYearPickerComponent {
1335
1703
  this.datepicker.refreshView();
1336
1704
  }
1337
1705
  getStartingYear(year) {
1338
- return Math.floor((year - 1) / this.datepicker.yearRange) * this.datepicker.yearRange + 1;
1706
+ return (Math.floor((year - 1) / this.datepicker.yearRange) *
1707
+ this.datepicker.yearRange +
1708
+ 1);
1339
1709
  }
1340
1710
  compareYears(date1, date2) {
1341
1711
  return date1.getFullYear() - date2.getFullYear();
@@ -1347,11 +1717,12 @@ class SkyYearPickerComponent {
1347
1717
  for (let i = 0; i < this.datepicker.yearRange; i++) {
1348
1718
  date = new Date(this.datepicker.activeDate);
1349
1719
  date.setFullYear(start + i, 0, 1);
1350
- years[i] =
1351
- this.datepicker.createDateObject(date, this.datepicker.formatYear, false, this.datepicker.datepickerId + '-' + i);
1720
+ years[i] = this.datepicker.createDateObject(date, this.datepicker.formatYear, false, this.datepicker.datepickerId + '-' + i);
1352
1721
  }
1353
- this.title = [years[0].label,
1354
- years[this.datepicker.yearRange - 1].label].join(' - ');
1722
+ this.title = [
1723
+ years[0].label,
1724
+ years[this.datepicker.yearRange - 1].label,
1725
+ ].join(' - ');
1355
1726
  this.rows = this.datepicker.createCalendarRows(years, this.datepicker.yearColLimit);
1356
1727
  }
1357
1728
  keydownYears(key, event) {
@@ -1377,20 +1748,22 @@ class SkyYearPickerComponent {
1377
1748
  date = this.getStartingYear(this.datepicker.activeDate.getFullYear());
1378
1749
  }
1379
1750
  else if (key === 'end') {
1380
- date
1381
- = this.getStartingYear(this.datepicker.activeDate.getFullYear()) + this.datepicker.yearRange - 1;
1751
+ date =
1752
+ this.getStartingYear(this.datepicker.activeDate.getFullYear()) +
1753
+ this.datepicker.yearRange -
1754
+ 1;
1382
1755
  }
1383
1756
  this.datepicker.activeDate.setFullYear(date);
1384
1757
  }
1385
1758
  }
1386
- SkyYearPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyYearPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1387
- SkyYearPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyYearPickerComponent, selector: "sky-yearpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode==='year'\" role=\"grid\">\n <thead>\n <tr>\n <th\n class=\"sky-datepicker-header-left\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th [attr.colspan]=\"((datepicker.yearColLimit - 2) <= 0) ? 1 : datepicker.yearColLimit - 2\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{'sky-btn-disabled': datepicker.datepickerMode === datepicker.maxMode}\"\n tabindex=\"-1\"\n >\n <strong>{{title}}</strong>\n </button>\n </th>\n <th\n class=\"sky-datepicker-header-right\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-row\"\n role=\"gridcell\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{'sky-datepicker-btn-selected': date.selected, 'sky-btn-disabled': date.disabled, 'sky-btn-active': datepicker.isActive(date)}\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span\n [ngClass]=\"{'sky-datepicker-current': date.current }\">{{date.label}}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyYearPickerComponent, decorators: [{
1759
+ SkyYearPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyYearPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
1760
+ SkyYearPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyYearPickerComponent, selector: "sky-yearpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.yearColLimit - 2 <= 0 ? 1 : datepicker.yearColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"\n sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\n \"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td *ngFor=\"let date of row\" class=\"sky-datepicker-row\" role=\"gridcell\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyYearPickerComponent, decorators: [{
1389
1762
  type: Component,
1390
1763
  args: [{
1391
1764
  selector: 'sky-yearpicker',
1392
1765
  templateUrl: 'yearpicker.component.html',
1393
- styleUrls: ['./yearpicker.component.scss']
1766
+ styleUrls: ['./yearpicker.component.scss'],
1394
1767
  }]
1395
1768
  }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; } });
1396
1769
 
@@ -1402,8 +1775,9 @@ class SkyDatepickerCalendarComponent {
1402
1775
  this.adapter = adapter;
1403
1776
  this.config = config;
1404
1777
  this.elementRef = elementRef;
1405
- this.selectedDateChange = new EventEmitter(undefined);
1778
+ this.calendarDateRangeChange = new EventEmitter();
1406
1779
  this.calendarModeChange = new EventEmitter();
1780
+ this.selectedDateChange = new EventEmitter(undefined);
1407
1781
  this._now = new Date();
1408
1782
  this.formatter = new SkyDateFormatter();
1409
1783
  this.configureOptions();
@@ -1428,6 +1802,9 @@ class SkyDatepickerCalendarComponent {
1428
1802
  configureOptions() {
1429
1803
  Object.assign(this, this.config);
1430
1804
  }
1805
+ onCalendarDateRangeChange(event) {
1806
+ this.calendarDateRangeChange.next(event);
1807
+ }
1431
1808
  onCalendarModeChange(event) {
1432
1809
  this.calendarModeChange.emit(event);
1433
1810
  }
@@ -1435,10 +1812,10 @@ class SkyDatepickerCalendarComponent {
1435
1812
  this.selectedDateChange.emit(event);
1436
1813
  }
1437
1814
  writeValue(value) {
1438
- if (value !== undefined
1439
- && this.formatter.dateIsValid(value)
1440
- && this.selectedDate !== undefined
1441
- && this._datepicker.compareHandlerDay(value, this.selectedDate) === 0) {
1815
+ if (value !== undefined &&
1816
+ this.formatter.dateIsValid(value) &&
1817
+ this.selectedDate !== undefined &&
1818
+ this._datepicker.compareHandlerDay(value, this.selectedDate) === 0) {
1442
1819
  return;
1443
1820
  }
1444
1821
  if (this.formatter.dateIsValid(value)) {
@@ -1451,17 +1828,21 @@ class SkyDatepickerCalendarComponent {
1451
1828
  }
1452
1829
  }
1453
1830
  }
1454
- SkyDatepickerCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: SkyDatepickerAdapterService }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1455
- SkyDatepickerCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: { minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate", startingDay: "startingDay" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, providers: [SkyDatepickerAdapterService], viewQueries: [{ propertyName: "_datepicker", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [selectedDate]=\"selectedDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [startingDay]=\"startingDay\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n (calendarModeChange)=\"onCalendarModeChange($event)\">\n <sky-daypicker tabindex=\"0\"></sky-daypicker>\n <sky-monthpicker tabindex=\"0\"></sky-monthpicker>\n <sky-yearpicker tabindex=\"0\"></sky-yearpicker>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"], components: [{ type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: ["startingDay", "minDate", "maxDate", "selectedDate"], outputs: ["selectedDateChange", "calendarModeChange"] }, { type: SkyDayPickerComponent, selector: "sky-daypicker" }, { type: SkyMonthPickerComponent, selector: "sky-monthpicker" }, { type: SkyYearPickerComponent, selector: "sky-yearpicker" }] });
1456
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{
1831
+ SkyDatepickerCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: SkyDatepickerAdapterService }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1832
+ SkyDatepickerCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: { customDates: "customDates", isDaypickerWaiting: "isDaypickerWaiting", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate", startingDay: "startingDay" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange", calendarModeChange: "calendarModeChange", selectedDateChange: "selectedDateChange" }, providers: [SkyDatepickerAdapterService], viewQueries: [{ propertyName: "_datepicker", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [customDates]=\"customDates\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectedDate]=\"selectedDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange($event)\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n <sky-daypicker\n tabindex=\"0\"\n [customDates]=\"customDates\"\n [isWaiting]=\"isDaypickerWaiting\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n ></sky-daypicker>\n <sky-monthpicker tabindex=\"0\"></sky-monthpicker>\n <sky-yearpicker tabindex=\"0\"></sky-yearpicker>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"], components: [{ type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: ["customDates", "startingDay", "minDate", "maxDate", "selectedDate"], outputs: ["selectedDateChange", "calendarModeChange"] }, { type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: ["customDates", "isWaiting"], outputs: ["calendarDateRangeChange"] }, { type: SkyMonthPickerComponent, selector: "sky-monthpicker" }, { type: SkyYearPickerComponent, selector: "sky-yearpicker" }] });
1833
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{
1457
1834
  type: Component,
1458
1835
  args: [{
1459
1836
  selector: 'sky-datepicker-calendar',
1460
1837
  templateUrl: './datepicker-calendar.component.html',
1461
1838
  styleUrls: ['./datepicker-calendar.component.scss'],
1462
- providers: [SkyDatepickerAdapterService]
1839
+ providers: [SkyDatepickerAdapterService],
1463
1840
  }]
1464
- }], ctorParameters: function () { return [{ type: SkyDatepickerAdapterService }, { type: SkyDatepickerConfigService }, { type: i0.ElementRef }]; }, propDecorators: { minDate: [{
1841
+ }], ctorParameters: function () { return [{ type: SkyDatepickerAdapterService }, { type: SkyDatepickerConfigService }, { type: i0.ElementRef }]; }, propDecorators: { customDates: [{
1842
+ type: Input
1843
+ }], isDaypickerWaiting: [{
1844
+ type: Input
1845
+ }], minDate: [{
1465
1846
  type: Input
1466
1847
  }], maxDate: [{
1467
1848
  type: Input
@@ -1469,15 +1850,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
1469
1850
  type: Input
1470
1851
  }], startingDay: [{
1471
1852
  type: Input
1472
- }], selectedDateChange: [{
1853
+ }], calendarDateRangeChange: [{
1473
1854
  type: Output
1474
1855
  }], calendarModeChange: [{
1475
1856
  type: Output
1857
+ }], selectedDateChange: [{
1858
+ type: Output
1476
1859
  }], _datepicker: [{
1477
1860
  type: ViewChild,
1478
1861
  args: [SkyDatepickerCalendarInnerComponent, {
1479
1862
  read: SkyDatepickerCalendarInnerComponent,
1480
- static: true
1863
+ static: true,
1481
1864
  }]
1482
1865
  }] } });
1483
1866
 
@@ -1497,7 +1880,14 @@ class SkyDatepickerComponent {
1497
1880
  * Adds a class to the datepicker.
1498
1881
  */
1499
1882
  this.pickerClass = '';
1883
+ /**
1884
+ * Fires when the range of displayed dates in the calendar changes. Provides the
1885
+ * current range of displayed dates and a mutable `customDate` property consumers can use
1886
+ * to modify individual dates on the calendar.
1887
+ */
1888
+ this.calendarDateRangeChange = new EventEmitter();
1500
1889
  this.dateChange = new EventEmitter();
1890
+ this.isDaypickerWaiting = false;
1501
1891
  this.isOpen = false;
1502
1892
  this.isVisible = false;
1503
1893
  this.ngUnsubscribe = new Subject();
@@ -1580,7 +1970,7 @@ class SkyDatepickerComponent {
1580
1970
  if (this.inputBoxHostService) {
1581
1971
  this.inputBoxHostService.populate({
1582
1972
  inputTemplate: this.inputTemplateRef,
1583
- buttonsTemplate: this.triggerButtonTemplateRef
1973
+ buttonsTemplate: this.triggerButtonTemplateRef,
1584
1974
  });
1585
1975
  }
1586
1976
  }
@@ -1610,6 +2000,42 @@ class SkyDatepickerComponent {
1610
2000
  this.openPicker();
1611
2001
  }
1612
2002
  }
2003
+ onCalendarDateRangeChange(event) {
2004
+ /* istanbul ignore else */
2005
+ if (event) {
2006
+ this.cancelCustomDatesSubscription();
2007
+ const args = {
2008
+ startDate: event.startDate,
2009
+ endDate: event.endDate,
2010
+ customDates: undefined,
2011
+ };
2012
+ this.calendarDateRangeChange.emit(args);
2013
+ // If consumer has added an observable to the args, watch for incoming custom dates.
2014
+ /* istanbul ignore else */
2015
+ if (args.customDates) {
2016
+ this.isDaypickerWaiting = true;
2017
+ // Avoid an ExpressionChangedAfterItHasBeenCheckedError.
2018
+ this.changeDetector.detectChanges();
2019
+ this.customDatesSubscription = args.customDates
2020
+ .pipe(debounceTime(250))
2021
+ .subscribe((result) => {
2022
+ this.customDates = result;
2023
+ this.isDaypickerWaiting = false;
2024
+ // Trigger change detection in child components to show changes in the calendar.
2025
+ this.changeDetector.markForCheck();
2026
+ });
2027
+ }
2028
+ else {
2029
+ // If consumer returns an undefined value after custom dates have
2030
+ // already ben established, remove custom dates.
2031
+ if (this.customDates) {
2032
+ this.customDates = undefined;
2033
+ // Avoid an ExpressionChangedAfterItHasBeenCheckedError.
2034
+ this.changeDetector.detectChanges();
2035
+ }
2036
+ }
2037
+ }
2038
+ }
1613
2039
  closePicker() {
1614
2040
  this.destroyAffixer();
1615
2041
  this.destroyOverlay();
@@ -1633,7 +2059,7 @@ class SkyDatepickerComponent {
1633
2059
  affixer.placementChange
1634
2060
  .pipe(takeUntil(this.calendarUnsubscribe))
1635
2061
  .subscribe((change) => {
1636
- this.isVisible = (change.placement !== null);
2062
+ this.isVisible = change.placement !== null;
1637
2063
  this.changeDetector.markForCheck();
1638
2064
  });
1639
2065
  affixer.affixTo(this.triggerButtonRef.nativeElement, {
@@ -1641,7 +2067,7 @@ class SkyDatepickerComponent {
1641
2067
  enableAutoFit: true,
1642
2068
  horizontalAlignment: 'right',
1643
2069
  isSticky: true,
1644
- placement: 'below'
2070
+ placement: 'below',
1645
2071
  });
1646
2072
  this.affixer = affixer;
1647
2073
  }
@@ -1656,7 +2082,7 @@ class SkyDatepickerComponent {
1656
2082
  const overlay = this.overlayService.create({
1657
2083
  wrapperClass: this.pickerClass,
1658
2084
  enableClose: false,
1659
- enablePointerEvents: false
2085
+ enablePointerEvents: false,
1660
2086
  });
1661
2087
  overlay.backdropClick
1662
2088
  .pipe(takeUntil(this.calendarUnsubscribe))
@@ -1698,16 +2124,22 @@ class SkyDatepickerComponent {
1698
2124
  }
1699
2125
  (_a = this.overlayKeydownListner) === null || _a === void 0 ? void 0 : _a.unsubscribe();
1700
2126
  }
2127
+ cancelCustomDatesSubscription() {
2128
+ if (this.customDatesSubscription) {
2129
+ this.customDatesSubscription.unsubscribe();
2130
+ this.customDatesSubscription = undefined;
2131
+ }
2132
+ }
1701
2133
  }
1702
- SkyDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2$1.SkyInputBoxHostService, optional: true }, { token: i3$2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1703
- SkyDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: { pickerClass: "pickerClass" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: SkyDatepickerCalendarComponent, descendants: true }, { propertyName: "calendarRef", first: true, predicate: ["calendarRef"], descendants: true, read: ElementRef }, { propertyName: "calendarTemplateRef", first: true, predicate: ["calendarTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-datepicker\"\n>\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div\n class=\"sky-input-group\"\n >\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-datepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? calendarId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"calendar\"\n size=\"lg\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"calendar\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #calendarTemplateRef>\n <div\n class=\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"calendarId\"\n [class.sky-datepicker-hidden]=\"!isVisible\"\n #calendarRef\n >\n <sky-datepicker-calendar\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange()\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n </sky-datepicker-calendar>\n </div>\n</ng-template>\n", styles: [".sky-datepicker-calendar-container{position:fixed;border-radius:5px}.sky-datepicker-hidden{visibility:hidden}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: ["minDate", "maxDate", "selectedDate", "startingDay"], outputs: ["selectedDateChange", "calendarModeChange"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1704
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerComponent, decorators: [{
2134
+ SkyDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2$1.SkyInputBoxHostService, optional: true }, { token: i3$2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2135
+ SkyDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: { pickerClass: "pickerClass" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: SkyDatepickerCalendarComponent, descendants: true }, { propertyName: "calendarRef", first: true, predicate: ["calendarRef"], descendants: true, read: ElementRef }, { propertyName: "calendarTemplateRef", first: true, predicate: ["calendarTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-datepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-datepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? calendarId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"\n 'skyux_datepicker_trigger_button_label' | skyLibResources\n \"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"calendar\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"calendar\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #calendarTemplateRef>\n <div\n class=\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"calendarId\"\n [class.sky-datepicker-hidden]=\"!isVisible\"\n #calendarRef\n >\n <sky-datepicker-calendar\n [customDates]=\"customDates\"\n [isDaypickerWaiting]=\"isDaypickerWaiting\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [startingDay]=\"startingDay\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n (calendarModeChange)=\"onCalendarModeChange()\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n </sky-datepicker-calendar>\n </div>\n</ng-template>\n", styles: [".sky-datepicker-calendar-container{position:fixed;border-radius:5px}.sky-datepicker-hidden{visibility:hidden}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: ["customDates", "isDaypickerWaiting", "minDate", "maxDate", "selectedDate", "startingDay"], outputs: ["calendarDateRangeChange", "calendarModeChange", "selectedDateChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerComponent, decorators: [{
1705
2137
  type: Component,
1706
2138
  args: [{
1707
2139
  selector: 'sky-datepicker',
1708
2140
  templateUrl: './datepicker.component.html',
1709
2141
  styleUrls: ['./datepicker.component.scss'],
1710
- changeDetection: ChangeDetectionStrategy.OnPush
2142
+ changeDetection: ChangeDetectionStrategy.OnPush,
1711
2143
  }]
1712
2144
  }], ctorParameters: function () { return [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2$1.SkyInputBoxHostService, decorators: [{
1713
2145
  type: Optional
@@ -1715,35 +2147,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
1715
2147
  type: Optional
1716
2148
  }] }]; }, propDecorators: { pickerClass: [{
1717
2149
  type: Input
2150
+ }], calendarDateRangeChange: [{
2151
+ type: Output
1718
2152
  }], calendar: [{
1719
2153
  type: ViewChild,
1720
2154
  args: [SkyDatepickerCalendarComponent]
1721
2155
  }], calendarRef: [{
1722
2156
  type: ViewChild,
1723
2157
  args: ['calendarRef', {
1724
- read: ElementRef
2158
+ read: ElementRef,
1725
2159
  }]
1726
2160
  }], calendarTemplateRef: [{
1727
2161
  type: ViewChild,
1728
2162
  args: ['calendarTemplateRef', {
1729
- read: TemplateRef
2163
+ read: TemplateRef,
1730
2164
  }]
1731
2165
  }], triggerButtonRef: [{
1732
2166
  type: ViewChild,
1733
2167
  args: ['triggerButtonRef', {
1734
- read: ElementRef
2168
+ read: ElementRef,
1735
2169
  }]
1736
2170
  }], inputTemplateRef: [{
1737
2171
  type: ViewChild,
1738
2172
  args: ['inputTemplateRef', {
1739
2173
  read: TemplateRef,
1740
- static: true
2174
+ static: true,
1741
2175
  }]
1742
2176
  }], triggerButtonTemplateRef: [{
1743
2177
  type: ViewChild,
1744
2178
  args: ['triggerButtonTemplateRef', {
1745
2179
  read: TemplateRef,
1746
- static: true
2180
+ static: true,
1747
2181
  }]
1748
2182
  }] } });
1749
2183
 
@@ -1751,12 +2185,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
1751
2185
  const SKY_DATEPICKER_VALUE_ACCESSOR = {
1752
2186
  provide: NG_VALUE_ACCESSOR,
1753
2187
  useExisting: forwardRef(() => SkyDatepickerInputDirective),
1754
- multi: true
2188
+ multi: true,
1755
2189
  };
1756
2190
  const SKY_DATEPICKER_VALIDATOR = {
1757
2191
  provide: NG_VALIDATORS,
1758
2192
  useExisting: forwardRef(() => SkyDatepickerInputDirective),
1759
- multi: true
2193
+ multi: true,
1760
2194
  };
1761
2195
  // tslint:enable
1762
2196
  class SkyDatepickerInputDirective {
@@ -1783,11 +2217,13 @@ class SkyDatepickerInputDirective {
1783
2217
  this.onValidatorChange = () => { };
1784
2218
  this.initialPlaceholder = this.adapter.getPlaceholder(this.elementRef);
1785
2219
  this.updatePlaceholder();
1786
- this.localeProvider.getLocaleInfo()
2220
+ this.localeProvider
2221
+ .getLocaleInfo()
1787
2222
  .pipe(takeUntil(this.ngUnsubscribe))
1788
2223
  .subscribe((localeInfo) => {
1789
2224
  SkyDateFormatter.setLocale(localeInfo.locale);
1790
- this.preferredShortDateFormat = SkyDateFormatter.getPreferredShortDateFormat();
2225
+ this.preferredShortDateFormat =
2226
+ SkyDateFormatter.getPreferredShortDateFormat();
1791
2227
  this.applyDateFormat();
1792
2228
  });
1793
2229
  }
@@ -1804,9 +2240,9 @@ class SkyDatepickerInputDirective {
1804
2240
  }
1805
2241
  }
1806
2242
  get dateFormat() {
1807
- return this._dateFormat ||
2243
+ return (this._dateFormat ||
1808
2244
  this.configService.dateFormat ||
1809
- this.preferredShortDateFormat;
2245
+ this.preferredShortDateFormat);
1810
2246
  }
1811
2247
  /**
1812
2248
  * Indicates whether to disable the datepicker.
@@ -1899,9 +2335,9 @@ class SkyDatepickerInputDirective {
1899
2335
  }
1900
2336
  set value(value) {
1901
2337
  const dateValue = this.getDateValue(value);
1902
- const areDatesEqual = (this._value instanceof Date &&
2338
+ const areDatesEqual = this._value instanceof Date &&
1903
2339
  dateValue &&
1904
- dateValue.getTime() === this._value.getTime());
2340
+ dateValue.getTime() === this._value.getTime();
1905
2341
  const isValidDateString = this.isDateStringValid(value);
1906
2342
  // If the string value supplied is malformed, do not set the value to its Date equivalent.
1907
2343
  // (JavaScript's Date parser will convert poorly formatted dates to Date objects, such as "abc 123", which isn't ideal.)
@@ -1910,7 +2346,7 @@ class SkyDatepickerInputDirective {
1910
2346
  this.notifyUpdatedValue();
1911
2347
  }
1912
2348
  else if (dateValue !== this._value || !areDatesEqual) {
1913
- this._value = (dateValue || value);
2349
+ this._value = dateValue || value;
1914
2350
  this.notifyUpdatedValue();
1915
2351
  }
1916
2352
  if (dateValue && isValidDateString) {
@@ -1930,7 +2366,8 @@ class SkyDatepickerInputDirective {
1930
2366
  this.renderer.addClass(element, 'sky-form-control');
1931
2367
  const hasAriaLabel = element.getAttribute('aria-label');
1932
2368
  if (!hasAriaLabel) {
1933
- this.resourcesService.getString('skyux_date_field_default_label')
2369
+ this.resourcesService
2370
+ .getString('skyux_date_field_default_label')
1934
2371
  .pipe(takeUntil(this.ngUnsubscribe))
1935
2372
  .subscribe((value) => {
1936
2373
  this.renderer.setAttribute(element, 'aria-label', value);
@@ -1957,7 +2394,7 @@ class SkyDatepickerInputDirective {
1957
2394
  if (this.control && this.control.parent) {
1958
2395
  setTimeout(() => {
1959
2396
  this.control.setValue(this.value, {
1960
- emitEvent: false
2397
+ emitEvent: false,
1961
2398
  });
1962
2399
  this.changeDetector.markForCheck();
1963
2400
  });
@@ -1983,8 +2420,8 @@ class SkyDatepickerInputDirective {
1983
2420
  this.onChange(value);
1984
2421
  this.control.setErrors({
1985
2422
  skyDate: {
1986
- invalid: true
1987
- }
2423
+ invalid: true,
2424
+ },
1988
2425
  });
1989
2426
  }
1990
2427
  onInputBlur() {
@@ -2008,35 +2445,31 @@ class SkyDatepickerInputDirective {
2008
2445
  return;
2009
2446
  }
2010
2447
  const dateValue = this.getDateValue(value);
2011
- const isDateValid = (dateValue && this.dateFormatter.dateIsValid(dateValue));
2448
+ const isDateValid = dateValue && this.dateFormatter.dateIsValid(dateValue);
2012
2449
  if (!isDateValid || !this.isDateStringValid(value)) {
2013
2450
  // Mark the invalid control as touched so that the input's invalid CSS styles appear.
2014
2451
  // (This is only required when the invalid value is set by the FormControl constructor.)
2015
2452
  this.control.markAsTouched();
2016
2453
  return {
2017
- 'skyDate': {
2018
- invalid: value
2019
- }
2454
+ skyDate: {
2455
+ invalid: value,
2456
+ },
2020
2457
  };
2021
2458
  }
2022
2459
  const minDate = this.minDate;
2023
- if (minDate &&
2024
- this.dateFormatter.dateIsValid(minDate) &&
2025
- value < minDate) {
2460
+ if (minDate && this.dateFormatter.dateIsValid(minDate) && value < minDate) {
2026
2461
  return {
2027
- 'skyDate': {
2028
- minDate
2029
- }
2462
+ skyDate: {
2463
+ minDate,
2464
+ },
2030
2465
  };
2031
2466
  }
2032
2467
  const maxDate = this.maxDate;
2033
- if (maxDate &&
2034
- this.dateFormatter.dateIsValid(maxDate) &&
2035
- value > maxDate) {
2468
+ if (maxDate && this.dateFormatter.dateIsValid(maxDate) && value > maxDate) {
2036
2469
  return {
2037
- 'skyDate': {
2038
- maxDate
2039
- }
2470
+ skyDate: {
2471
+ maxDate,
2472
+ },
2040
2473
  };
2041
2474
  }
2042
2475
  }
@@ -2123,21 +2556,21 @@ class SkyDatepickerInputDirective {
2123
2556
  }
2124
2557
  }
2125
2558
  }
2126
- SkyDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerInputDirective, deps: [{ token: SkyDatepickerAdapterService }, { token: i0.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2127
- SkyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerInput: "skyDatepickerInput", skyDatepickerNoValidate: "skyDatepickerNoValidate", startingDay: "startingDay", strict: "strict" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "keyup": "onInputKeyup()" } }, providers: [
2559
+ SkyDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerInputDirective, deps: [{ token: SkyDatepickerAdapterService }, { token: i0.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2560
+ SkyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.14", type: SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerInput: "skyDatepickerInput", skyDatepickerNoValidate: "skyDatepickerNoValidate", startingDay: "startingDay", strict: "strict" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "keyup": "onInputKeyup()" } }, providers: [
2128
2561
  SKY_DATEPICKER_VALUE_ACCESSOR,
2129
2562
  SKY_DATEPICKER_VALIDATOR,
2130
- SkyDatepickerAdapterService
2563
+ SkyDatepickerAdapterService,
2131
2564
  ], ngImport: i0 });
2132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerInputDirective, decorators: [{
2565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerInputDirective, decorators: [{
2133
2566
  type: Directive,
2134
2567
  args: [{
2135
2568
  selector: '[skyDatepickerInput]',
2136
2569
  providers: [
2137
2570
  SKY_DATEPICKER_VALUE_ACCESSOR,
2138
2571
  SKY_DATEPICKER_VALIDATOR,
2139
- SkyDatepickerAdapterService
2140
- ]
2572
+ SkyDatepickerAdapterService,
2573
+ ],
2141
2574
  }]
2142
2575
  }], ctorParameters: function () { return [{ type: SkyDatepickerAdapterService }, { type: i0.ChangeDetectorRef }, { type: SkyDatepickerConfigService }, { type: i0.ElementRef }, { type: i3.SkyAppLocaleProvider }, { type: i0.Renderer2 }, { type: i3.SkyLibResourcesService }, { type: SkyDatepickerComponent, decorators: [{
2143
2576
  type: Optional
@@ -2172,12 +2605,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
2172
2605
  const SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR = {
2173
2606
  provide: NG_VALUE_ACCESSOR,
2174
2607
  useExisting: forwardRef(() => SkyFuzzyDatepickerInputDirective),
2175
- multi: true
2608
+ multi: true,
2176
2609
  };
2177
2610
  const SKY_FUZZY_DATEPICKER_VALIDATOR = {
2178
2611
  provide: NG_VALIDATORS,
2179
2612
  useExisting: forwardRef(() => SkyFuzzyDatepickerInputDirective),
2180
- multi: true
2613
+ multi: true,
2181
2614
  };
2182
2615
  // tslint:enable
2183
2616
  class SkyFuzzyDatepickerInputDirective {
@@ -2205,12 +2638,14 @@ class SkyFuzzyDatepickerInputDirective {
2205
2638
  /*istanbul ignore next */
2206
2639
  this.onTouched = () => { };
2207
2640
  this.onValidatorChange = () => { };
2208
- this.localeProvider.getLocaleInfo()
2641
+ this.localeProvider
2642
+ .getLocaleInfo()
2209
2643
  .pipe(takeUntil(this.ngUnsubscribe))
2210
2644
  .subscribe((localeInfo) => {
2211
2645
  this.locale = localeInfo.locale;
2212
2646
  SkyDateFormatter.setLocale(this.locale);
2213
- this.preferredShortDateFormat = SkyDateFormatter.getPreferredShortDateFormat();
2647
+ this.preferredShortDateFormat =
2648
+ SkyDateFormatter.getPreferredShortDateFormat();
2214
2649
  });
2215
2650
  }
2216
2651
  /**
@@ -2227,9 +2662,9 @@ class SkyFuzzyDatepickerInputDirective {
2227
2662
  }
2228
2663
  }
2229
2664
  get dateFormat() {
2230
- return this._dateFormat ||
2665
+ return (this._dateFormat ||
2231
2666
  this.configService.dateFormat ||
2232
- this.preferredShortDateFormat;
2667
+ this.preferredShortDateFormat);
2233
2668
  }
2234
2669
  /**
2235
2670
  * Indicates whether to disable the datepicker.
@@ -2350,8 +2785,7 @@ class SkyFuzzyDatepickerInputDirective {
2350
2785
  }
2351
2786
  }
2352
2787
  const areFuzzyDatesEqual = this.fuzzyDatesEqual(this._value, fuzzyDate);
2353
- const isNewValue = (fuzzyDate !== this._value ||
2354
- !areFuzzyDatesEqual);
2788
+ const isNewValue = fuzzyDate !== this._value || !areFuzzyDatesEqual;
2355
2789
  this._value = fuzzyDate || value;
2356
2790
  if (isNewValue) {
2357
2791
  this.onChange(this._value);
@@ -2382,7 +2816,8 @@ class SkyFuzzyDatepickerInputDirective {
2382
2816
  const hasAriaLabel = element.getAttribute('aria-label');
2383
2817
  /* istanbul ignore else */
2384
2818
  if (!hasAriaLabel) {
2385
- this.resourcesService.getString('skyux_date_field_default_label')
2819
+ this.resourcesService
2820
+ .getString('skyux_date_field_default_label')
2386
2821
  .pipe(takeUntil(this.ngUnsubscribe))
2387
2822
  .subscribe((value) => {
2388
2823
  this.renderer.setAttribute(element, 'aria-label', value);
@@ -2408,7 +2843,7 @@ class SkyFuzzyDatepickerInputDirective {
2408
2843
  if (this.control && this.control.parent) {
2409
2844
  setTimeout(() => {
2410
2845
  this.control.setValue(this.value, {
2411
- emitEvent: false
2846
+ emitEvent: false,
2412
2847
  });
2413
2848
  this.changeDetector.markForCheck();
2414
2849
  });
@@ -2455,16 +2890,16 @@ class SkyFuzzyDatepickerInputDirective {
2455
2890
  }
2456
2891
  if (!fuzzyDate) {
2457
2892
  validationError = {
2458
- 'skyFuzzyDate': {
2459
- invalid: value
2460
- }
2893
+ skyFuzzyDate: {
2894
+ invalid: value,
2895
+ },
2461
2896
  };
2462
2897
  }
2463
2898
  if (!validationError && !fuzzyDate.year && this.yearRequired) {
2464
2899
  validationError = {
2465
- 'skyFuzzyDate': {
2466
- yearRequired: value
2467
- }
2900
+ skyFuzzyDate: {
2901
+ yearRequired: value,
2902
+ },
2468
2903
  };
2469
2904
  }
2470
2905
  if (!validationError && fuzzyDate.year) {
@@ -2473,9 +2908,9 @@ class SkyFuzzyDatepickerInputDirective {
2473
2908
  fuzzyDateRange = this.fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.maxDate);
2474
2909
  if (!fuzzyDateRange.valid) {
2475
2910
  validationError = {
2476
- 'skyFuzzyDate': {
2477
- maxDate: value
2478
- }
2911
+ skyFuzzyDate: {
2912
+ maxDate: value,
2913
+ },
2479
2914
  };
2480
2915
  }
2481
2916
  }
@@ -2483,9 +2918,9 @@ class SkyFuzzyDatepickerInputDirective {
2483
2918
  fuzzyDateRange = this.fuzzyDateService.getFuzzyDateRange(this.minDate, fuzzyDate);
2484
2919
  if (!fuzzyDateRange.valid) {
2485
2920
  validationError = {
2486
- 'skyFuzzyDate': {
2487
- minDate: value
2488
- }
2921
+ skyFuzzyDate: {
2922
+ minDate: value,
2923
+ },
2489
2924
  };
2490
2925
  }
2491
2926
  }
@@ -2493,9 +2928,9 @@ class SkyFuzzyDatepickerInputDirective {
2493
2928
  fuzzyDateRange = this.fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.fuzzyDateService.getCurrentFuzzyDate());
2494
2929
  if (!fuzzyDateRange.valid) {
2495
2930
  validationError = {
2496
- 'skyFuzzyDate': {
2497
- futureDisabled: value
2498
- }
2931
+ skyFuzzyDate: {
2932
+ futureDisabled: value,
2933
+ },
2499
2934
  };
2500
2935
  }
2501
2936
  }
@@ -2557,28 +2992,26 @@ class SkyFuzzyDatepickerInputDirective {
2557
2992
  }
2558
2993
  /* istanbul ignore next */
2559
2994
  fuzzyDatesEqual(dateA, dateB) {
2560
- return dateA && dateB
2561
- && ((!dateA.day && !dateB.day)
2562
- || dateA.day === dateB.day)
2563
- && ((!dateA.month && !dateB.month)
2564
- || dateA.month === dateB.month)
2565
- && ((!dateA.year && !dateB.year)
2566
- || dateA.year === dateB.year);
2995
+ return (dateA &&
2996
+ dateB &&
2997
+ ((!dateA.day && !dateB.day) || dateA.day === dateB.day) &&
2998
+ ((!dateA.month && !dateB.month) || dateA.month === dateB.month) &&
2999
+ ((!dateA.year && !dateB.year) || dateA.year === dateB.year));
2567
3000
  }
2568
3001
  }
2569
- SkyFuzzyDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: SkyFuzzyDateService }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2570
- SkyFuzzyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: SkyFuzzyDatepickerInputDirective, selector: "[skyFuzzyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", futureDisabled: "futureDisabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerNoValidate: "skyDatepickerNoValidate", skyFuzzyDatepickerInput: "skyFuzzyDatepickerInput", startingDay: "startingDay", yearRequired: "yearRequired" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "keyup": "onInputKeyup()" } }, providers: [
3002
+ SkyFuzzyDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: SkyFuzzyDateService }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3003
+ SkyFuzzyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.14", type: SkyFuzzyDatepickerInputDirective, selector: "[skyFuzzyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", futureDisabled: "futureDisabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerNoValidate: "skyDatepickerNoValidate", skyFuzzyDatepickerInput: "skyFuzzyDatepickerInput", startingDay: "startingDay", yearRequired: "yearRequired" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "keyup": "onInputKeyup()" } }, providers: [
2571
3004
  SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,
2572
- SKY_FUZZY_DATEPICKER_VALIDATOR
3005
+ SKY_FUZZY_DATEPICKER_VALIDATOR,
2573
3006
  ], ngImport: i0 });
2574
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, decorators: [{
3007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, decorators: [{
2575
3008
  type: Directive,
2576
3009
  args: [{
2577
3010
  selector: '[skyFuzzyDatepickerInput]',
2578
3011
  providers: [
2579
3012
  SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,
2580
- SKY_FUZZY_DATEPICKER_VALIDATOR
2581
- ]
3013
+ SKY_FUZZY_DATEPICKER_VALIDATOR,
3014
+ ],
2582
3015
  }]
2583
3016
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: SkyDatepickerConfigService }, { type: i0.ElementRef }, { type: SkyFuzzyDateService }, { type: i3.SkyAppLocaleProvider }, { type: i0.Renderer2 }, { type: i3.SkyLibResourcesService }, { type: SkyDatepickerComponent, decorators: [{
2584
3017
  type: Optional
@@ -2613,26 +3046,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
2613
3046
 
2614
3047
  class SkyDatepickerModule {
2615
3048
  }
2616
- SkyDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2617
- SkyDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerModule, declarations: [SkyDatepickerCalendarComponent,
3049
+ SkyDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3050
+ SkyDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerModule, declarations: [SkyDatepickerCalendarComponent,
2618
3051
  SkyDatepickerCalendarInnerComponent,
2619
3052
  SkyDayPickerComponent,
2620
3053
  SkyMonthPickerComponent,
2621
3054
  SkyYearPickerComponent,
2622
3055
  SkyDatepickerComponent,
2623
3056
  SkyDatepickerInputDirective,
2624
- SkyFuzzyDatepickerInputDirective], imports: [CommonModule,
3057
+ SkyFuzzyDatepickerInputDirective,
3058
+ SkyDayPickerCellComponent,
3059
+ SkyDayPickerButtonComponent], imports: [CommonModule,
2625
3060
  SkyI18nModule,
2626
3061
  FormsModule,
2627
3062
  SkyIconModule,
2628
3063
  SkyDatetimeResourcesModule,
2629
3064
  SkyAffixModule,
2630
3065
  SkyOverlayModule,
2631
- SkyThemeModule], exports: [SkyDatepickerCalendarComponent,
3066
+ SkyThemeModule,
3067
+ SkyPopoverModule,
3068
+ SkyWaitModule], exports: [SkyDatepickerCalendarComponent,
2632
3069
  SkyDatepickerComponent,
2633
3070
  SkyDatepickerInputDirective,
2634
3071
  SkyFuzzyDatepickerInputDirective] });
2635
- SkyDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerModule, imports: [[
3072
+ SkyDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerModule, providers: [SkyDatepickerService], imports: [[
2636
3073
  CommonModule,
2637
3074
  SkyI18nModule,
2638
3075
  FormsModule,
@@ -2640,9 +3077,11 @@ SkyDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
2640
3077
  SkyDatetimeResourcesModule,
2641
3078
  SkyAffixModule,
2642
3079
  SkyOverlayModule,
2643
- SkyThemeModule
3080
+ SkyThemeModule,
3081
+ SkyPopoverModule,
3082
+ SkyWaitModule,
2644
3083
  ]] });
2645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDatepickerModule, decorators: [{
3084
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDatepickerModule, decorators: [{
2646
3085
  type: NgModule,
2647
3086
  args: [{
2648
3087
  declarations: [
@@ -2653,7 +3092,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
2653
3092
  SkyYearPickerComponent,
2654
3093
  SkyDatepickerComponent,
2655
3094
  SkyDatepickerInputDirective,
2656
- SkyFuzzyDatepickerInputDirective
3095
+ SkyFuzzyDatepickerInputDirective,
3096
+ SkyDayPickerCellComponent,
3097
+ SkyDayPickerButtonComponent,
2657
3098
  ],
2658
3099
  imports: [
2659
3100
  CommonModule,
@@ -2663,14 +3104,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
2663
3104
  SkyDatetimeResourcesModule,
2664
3105
  SkyAffixModule,
2665
3106
  SkyOverlayModule,
2666
- SkyThemeModule
3107
+ SkyThemeModule,
3108
+ SkyPopoverModule,
3109
+ SkyWaitModule,
2667
3110
  ],
2668
3111
  exports: [
2669
3112
  SkyDatepickerCalendarComponent,
2670
3113
  SkyDatepickerComponent,
2671
3114
  SkyDatepickerInputDirective,
2672
- SkyFuzzyDatepickerInputDirective
2673
- ]
3115
+ SkyFuzzyDatepickerInputDirective,
3116
+ ],
3117
+ providers: [SkyDatepickerService],
2674
3118
  }]
2675
3119
  }] });
2676
3120
 
@@ -2709,7 +3153,7 @@ class SkyDateRangeCalculator {
2709
3153
  return {
2710
3154
  calculatorId: this.calculatorId,
2711
3155
  startDate,
2712
- endDate
3156
+ endDate,
2713
3157
  };
2714
3158
  }
2715
3159
  /**
@@ -2744,7 +3188,7 @@ class SkyDateRangeRelativeValue {
2744
3188
  const today = new Date();
2745
3189
  return {
2746
3190
  startDate: today,
2747
- endDate: today
3191
+ endDate: today,
2748
3192
  };
2749
3193
  }
2750
3194
  static get tomorrow() {
@@ -2752,7 +3196,7 @@ class SkyDateRangeRelativeValue {
2752
3196
  tomorrow.setDate(tomorrow.getDate() + 1);
2753
3197
  return {
2754
3198
  startDate: tomorrow,
2755
- endDate: tomorrow
3199
+ endDate: tomorrow,
2756
3200
  };
2757
3201
  }
2758
3202
  static get yesterday() {
@@ -2760,7 +3204,7 @@ class SkyDateRangeRelativeValue {
2760
3204
  yesterday.setDate(yesterday.getDate() - 1);
2761
3205
  return {
2762
3206
  startDate: yesterday,
2763
- endDate: yesterday
3207
+ endDate: yesterday,
2764
3208
  };
2765
3209
  }
2766
3210
  /**
@@ -2773,7 +3217,7 @@ class SkyDateRangeRelativeValue {
2773
3217
  endDate.setDate(endDate.getDate() - endDate.getDay() + 6);
2774
3218
  return {
2775
3219
  startDate,
2776
- endDate
3220
+ endDate,
2777
3221
  };
2778
3222
  }
2779
3223
  /**
@@ -2786,7 +3230,7 @@ class SkyDateRangeRelativeValue {
2786
3230
  endDate.setDate(endDate.getDate() - endDate.getDay() + 13);
2787
3231
  return {
2788
3232
  startDate,
2789
- endDate
3233
+ endDate,
2790
3234
  };
2791
3235
  }
2792
3236
  static get lastWeek() {
@@ -2796,7 +3240,7 @@ class SkyDateRangeRelativeValue {
2796
3240
  endDate.setDate(endDate.getDate() - endDate.getDay() - 1);
2797
3241
  return {
2798
3242
  startDate,
2799
- endDate
3243
+ endDate,
2800
3244
  };
2801
3245
  }
2802
3246
  static get thisMonth() {
@@ -2807,7 +3251,7 @@ class SkyDateRangeRelativeValue {
2807
3251
  endDate.setDate(0);
2808
3252
  return {
2809
3253
  startDate,
2810
- endDate
3254
+ endDate,
2811
3255
  };
2812
3256
  }
2813
3257
  static get nextMonth() {
@@ -2820,7 +3264,7 @@ class SkyDateRangeRelativeValue {
2820
3264
  endDate.setDate(0);
2821
3265
  return {
2822
3266
  startDate,
2823
- endDate
3267
+ endDate,
2824
3268
  };
2825
3269
  }
2826
3270
  static get lastMonth() {
@@ -2834,7 +3278,7 @@ class SkyDateRangeRelativeValue {
2834
3278
  endDate.setDate(0);
2835
3279
  return {
2836
3280
  startDate,
2837
- endDate
3281
+ endDate,
2838
3282
  };
2839
3283
  }
2840
3284
  static get thisQuarter() {
@@ -2848,7 +3292,7 @@ class SkyDateRangeRelativeValue {
2848
3292
  endDate.setDate(0);
2849
3293
  return {
2850
3294
  startDate,
2851
- endDate
3295
+ endDate,
2852
3296
  };
2853
3297
  }
2854
3298
  static get nextQuarter() {
@@ -2862,7 +3306,7 @@ class SkyDateRangeRelativeValue {
2862
3306
  endDate.setDate(0);
2863
3307
  return {
2864
3308
  startDate,
2865
- endDate
3309
+ endDate,
2866
3310
  };
2867
3311
  }
2868
3312
  static get lastQuarter() {
@@ -2878,7 +3322,7 @@ class SkyDateRangeRelativeValue {
2878
3322
  endDate.setDate(0);
2879
3323
  return {
2880
3324
  startDate,
2881
- endDate
3325
+ endDate,
2882
3326
  };
2883
3327
  }
2884
3328
  static get thisCalendarYear() {
@@ -2892,7 +3336,7 @@ class SkyDateRangeRelativeValue {
2892
3336
  endDate.setDate(0);
2893
3337
  return {
2894
3338
  startDate,
2895
- endDate
3339
+ endDate,
2896
3340
  };
2897
3341
  }
2898
3342
  static get nextCalendarYear() {
@@ -2907,7 +3351,7 @@ class SkyDateRangeRelativeValue {
2907
3351
  endDate.setDate(0);
2908
3352
  return {
2909
3353
  startDate,
2910
- endDate
3354
+ endDate,
2911
3355
  };
2912
3356
  }
2913
3357
  static get lastCalendarYear() {
@@ -2921,7 +3365,7 @@ class SkyDateRangeRelativeValue {
2921
3365
  endDate.setDate(0);
2922
3366
  return {
2923
3367
  startDate,
2924
- endDate
3368
+ endDate,
2925
3369
  };
2926
3370
  }
2927
3371
  static get thisFiscalYear() {
@@ -2977,7 +3421,7 @@ class SkyDateRangeRelativeValue {
2977
3421
  }
2978
3422
  return {
2979
3423
  startDate,
2980
- endDate
3424
+ endDate,
2981
3425
  };
2982
3426
  }
2983
3427
  }
@@ -2987,19 +3431,19 @@ const SKY_DEFAULT_CALCULATOR_CONFIGS = [
2987
3431
  calculatorId: SkyDateRangeCalculatorId.AnyTime,
2988
3432
  type: SkyDateRangeCalculatorType.Relative,
2989
3433
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_any_time',
2990
- getValue: (startDate, endDate) => ({ startDate, endDate })
3434
+ getValue: (startDate, endDate) => ({ startDate, endDate }),
2991
3435
  },
2992
3436
  {
2993
3437
  calculatorId: SkyDateRangeCalculatorId.Before,
2994
3438
  type: SkyDateRangeCalculatorType.Before,
2995
3439
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_before',
2996
- getValue: (startDate, endDate) => ({ startDate, endDate })
3440
+ getValue: (startDate, endDate) => ({ startDate, endDate }),
2997
3441
  },
2998
3442
  {
2999
3443
  calculatorId: SkyDateRangeCalculatorId.After,
3000
3444
  type: SkyDateRangeCalculatorType.After,
3001
3445
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_after',
3002
- getValue: (startDate, endDate) => ({ startDate, endDate })
3446
+ getValue: (startDate, endDate) => ({ startDate, endDate }),
3003
3447
  },
3004
3448
  {
3005
3449
  calculatorId: SkyDateRangeCalculatorId.SpecificRange,
@@ -3011,119 +3455,119 @@ const SKY_DEFAULT_CALCULATOR_CONFIGS = [
3011
3455
  value.endDate &&
3012
3456
  value.startDate > value.endDate) {
3013
3457
  return {
3014
- 'endDateBeforeStartDate': true
3458
+ endDateBeforeStartDate: true,
3015
3459
  };
3016
3460
  }
3017
- }
3461
+ },
3018
3462
  },
3019
3463
  {
3020
3464
  calculatorId: SkyDateRangeCalculatorId.LastFiscalYear,
3021
3465
  type: SkyDateRangeCalculatorType.Relative,
3022
3466
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_fiscal_year',
3023
- getValue: () => SkyDateRangeRelativeValue.lastFiscalYear
3467
+ getValue: () => SkyDateRangeRelativeValue.lastFiscalYear,
3024
3468
  },
3025
3469
  {
3026
3470
  calculatorId: SkyDateRangeCalculatorId.LastMonth,
3027
3471
  type: SkyDateRangeCalculatorType.Relative,
3028
3472
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_month',
3029
- getValue: () => SkyDateRangeRelativeValue.lastMonth
3473
+ getValue: () => SkyDateRangeRelativeValue.lastMonth,
3030
3474
  },
3031
3475
  {
3032
3476
  calculatorId: SkyDateRangeCalculatorId.LastQuarter,
3033
3477
  type: SkyDateRangeCalculatorType.Relative,
3034
3478
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_quarter',
3035
- getValue: () => SkyDateRangeRelativeValue.lastQuarter
3479
+ getValue: () => SkyDateRangeRelativeValue.lastQuarter,
3036
3480
  },
3037
3481
  {
3038
3482
  calculatorId: SkyDateRangeCalculatorId.LastWeek,
3039
3483
  type: SkyDateRangeCalculatorType.Relative,
3040
3484
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_week',
3041
- getValue: () => SkyDateRangeRelativeValue.lastWeek
3485
+ getValue: () => SkyDateRangeRelativeValue.lastWeek,
3042
3486
  },
3043
3487
  {
3044
3488
  calculatorId: SkyDateRangeCalculatorId.LastCalendarYear,
3045
3489
  type: SkyDateRangeCalculatorType.Relative,
3046
3490
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_calendar_year',
3047
- getValue: () => SkyDateRangeRelativeValue.lastCalendarYear
3491
+ getValue: () => SkyDateRangeRelativeValue.lastCalendarYear,
3048
3492
  },
3049
3493
  {
3050
3494
  calculatorId: SkyDateRangeCalculatorId.NextFiscalYear,
3051
3495
  type: SkyDateRangeCalculatorType.Relative,
3052
3496
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_fiscal_year',
3053
- getValue: () => SkyDateRangeRelativeValue.nextFiscalYear
3497
+ getValue: () => SkyDateRangeRelativeValue.nextFiscalYear,
3054
3498
  },
3055
3499
  {
3056
3500
  calculatorId: SkyDateRangeCalculatorId.NextMonth,
3057
3501
  type: SkyDateRangeCalculatorType.Relative,
3058
3502
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_month',
3059
- getValue: () => SkyDateRangeRelativeValue.nextMonth
3503
+ getValue: () => SkyDateRangeRelativeValue.nextMonth,
3060
3504
  },
3061
3505
  {
3062
3506
  calculatorId: SkyDateRangeCalculatorId.NextQuarter,
3063
3507
  type: SkyDateRangeCalculatorType.Relative,
3064
3508
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_quarter',
3065
- getValue: () => SkyDateRangeRelativeValue.nextQuarter
3509
+ getValue: () => SkyDateRangeRelativeValue.nextQuarter,
3066
3510
  },
3067
3511
  {
3068
3512
  calculatorId: SkyDateRangeCalculatorId.NextWeek,
3069
3513
  type: SkyDateRangeCalculatorType.Relative,
3070
3514
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_week',
3071
- getValue: () => SkyDateRangeRelativeValue.nextWeek
3515
+ getValue: () => SkyDateRangeRelativeValue.nextWeek,
3072
3516
  },
3073
3517
  {
3074
3518
  calculatorId: SkyDateRangeCalculatorId.NextCalendarYear,
3075
3519
  type: SkyDateRangeCalculatorType.Relative,
3076
3520
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_calendar_year',
3077
- getValue: () => SkyDateRangeRelativeValue.nextCalendarYear
3521
+ getValue: () => SkyDateRangeRelativeValue.nextCalendarYear,
3078
3522
  },
3079
3523
  {
3080
3524
  calculatorId: SkyDateRangeCalculatorId.ThisFiscalYear,
3081
3525
  type: SkyDateRangeCalculatorType.Relative,
3082
3526
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_fiscal_year',
3083
- getValue: () => SkyDateRangeRelativeValue.thisFiscalYear
3527
+ getValue: () => SkyDateRangeRelativeValue.thisFiscalYear,
3084
3528
  },
3085
3529
  {
3086
3530
  calculatorId: SkyDateRangeCalculatorId.ThisMonth,
3087
3531
  type: SkyDateRangeCalculatorType.Relative,
3088
3532
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_month',
3089
- getValue: () => SkyDateRangeRelativeValue.thisMonth
3533
+ getValue: () => SkyDateRangeRelativeValue.thisMonth,
3090
3534
  },
3091
3535
  {
3092
3536
  calculatorId: SkyDateRangeCalculatorId.ThisQuarter,
3093
3537
  type: SkyDateRangeCalculatorType.Relative,
3094
3538
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_quarter',
3095
- getValue: () => SkyDateRangeRelativeValue.thisQuarter
3539
+ getValue: () => SkyDateRangeRelativeValue.thisQuarter,
3096
3540
  },
3097
3541
  {
3098
3542
  calculatorId: SkyDateRangeCalculatorId.ThisWeek,
3099
3543
  type: SkyDateRangeCalculatorType.Relative,
3100
3544
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_week',
3101
- getValue: () => SkyDateRangeRelativeValue.thisWeek
3545
+ getValue: () => SkyDateRangeRelativeValue.thisWeek,
3102
3546
  },
3103
3547
  {
3104
3548
  calculatorId: SkyDateRangeCalculatorId.ThisCalendarYear,
3105
3549
  type: SkyDateRangeCalculatorType.Relative,
3106
3550
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_calendar_year',
3107
- getValue: () => SkyDateRangeRelativeValue.thisCalendarYear
3551
+ getValue: () => SkyDateRangeRelativeValue.thisCalendarYear,
3108
3552
  },
3109
3553
  {
3110
3554
  calculatorId: SkyDateRangeCalculatorId.Today,
3111
3555
  type: SkyDateRangeCalculatorType.Relative,
3112
3556
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_today',
3113
- getValue: () => SkyDateRangeRelativeValue.today
3557
+ getValue: () => SkyDateRangeRelativeValue.today,
3114
3558
  },
3115
3559
  {
3116
3560
  calculatorId: SkyDateRangeCalculatorId.Tomorrow,
3117
3561
  type: SkyDateRangeCalculatorType.Relative,
3118
3562
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_tomorrow',
3119
- getValue: () => SkyDateRangeRelativeValue.tomorrow
3563
+ getValue: () => SkyDateRangeRelativeValue.tomorrow,
3120
3564
  },
3121
3565
  {
3122
3566
  calculatorId: SkyDateRangeCalculatorId.Yesterday,
3123
3567
  type: SkyDateRangeCalculatorType.Relative,
3124
3568
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_yesterday',
3125
- getValue: () => SkyDateRangeRelativeValue.yesterday
3126
- }
3569
+ getValue: () => SkyDateRangeRelativeValue.yesterday,
3570
+ },
3127
3571
  ];
3128
3572
 
3129
3573
  /**
@@ -3164,16 +3608,14 @@ class SkyDateRangeService {
3164
3608
  getCalculatorById(id) {
3165
3609
  const calculatorId = parseInt(id, 10);
3166
3610
  const found = this.calculators.find((calculator) => {
3167
- return (calculator.calculatorId === calculatorId);
3611
+ return calculator.calculatorId === calculatorId;
3168
3612
  });
3169
3613
  return new Promise((resolve, reject) => {
3170
3614
  if (!found) {
3171
3615
  reject(new Error(`A calculator with the ID ${id} was not found.`));
3172
3616
  return;
3173
3617
  }
3174
- this.calculatorReadyStream
3175
- .pipe(first())
3176
- .subscribe(() => {
3618
+ this.calculatorReadyStream.pipe(first()).subscribe(() => {
3177
3619
  resolve(found);
3178
3620
  });
3179
3621
  });
@@ -3186,7 +3628,7 @@ class SkyDateRangeService {
3186
3628
  getValue: defaultConfig.getValue,
3187
3629
  validate: defaultConfig.validate,
3188
3630
  shortDescription: '',
3189
- type: defaultConfig.type
3631
+ type: defaultConfig.type,
3190
3632
  };
3191
3633
  tasks.push(this.resourcesService
3192
3634
  .getString(defaultConfig.shortDescriptionResourceKey)
@@ -3211,25 +3653,22 @@ class SkyDateRangeService {
3211
3653
  // Start the count higher than the number of available values
3212
3654
  // provided in the SkyDateRangeCalculatorId enum.
3213
3655
  SkyDateRangeService.lastId = 1000;
3214
- SkyDateRangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangeService, deps: [{ token: i3.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable });
3215
- SkyDateRangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangeService, providedIn: 'any' });
3216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangeService, decorators: [{
3217
- type: Injectable,
3218
- args: [{
3219
- providedIn: 'any'
3220
- }]
3656
+ SkyDateRangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangeService, deps: [{ token: i3.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable });
3657
+ SkyDateRangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangeService });
3658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangeService, decorators: [{
3659
+ type: Injectable
3221
3660
  }], ctorParameters: function () { return [{ type: i3.SkyLibResourcesService }]; } });
3222
3661
 
3223
3662
  /* tslint:disable:no-forward-ref no-use-before-declare */
3224
3663
  const SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR = {
3225
3664
  provide: NG_VALUE_ACCESSOR,
3226
3665
  useExisting: forwardRef(() => SkyDateRangePickerComponent),
3227
- multi: true
3666
+ multi: true,
3228
3667
  };
3229
3668
  const SKY_DATE_RANGE_PICKER_VALIDATOR = {
3230
3669
  provide: NG_VALIDATORS,
3231
3670
  useExisting: forwardRef(() => SkyDateRangePickerComponent),
3232
- multi: true
3671
+ multi: true,
3233
3672
  };
3234
3673
  /* tslint:enable */
3235
3674
  let uniqueId = 0;
@@ -3272,11 +3711,13 @@ class SkyDateRangePickerComponent {
3272
3711
  this.onTouched = () => { };
3273
3712
  /* istanbul ignore next */
3274
3713
  this.onValidatorChange = () => { };
3275
- this.localeProvider.getLocaleInfo()
3714
+ this.localeProvider
3715
+ .getLocaleInfo()
3276
3716
  .pipe(takeUntil(this.ngUnsubscribe))
3277
3717
  .subscribe((localeInfo) => {
3278
3718
  SkyDateFormatter.setLocale(localeInfo.locale);
3279
- this.preferredShortDateFormat = SkyDateFormatter.getPreferredShortDateFormat();
3719
+ this.preferredShortDateFormat =
3720
+ SkyDateFormatter.getPreferredShortDateFormat();
3280
3721
  });
3281
3722
  // Update icons when theme changes.
3282
3723
  /* istanbul ignore next */
@@ -3293,7 +3734,7 @@ class SkyDateRangePickerComponent {
3293
3734
  this._calculatorIds = value;
3294
3735
  }
3295
3736
  get calculatorIds() {
3296
- return this._calculatorIds || [
3737
+ return (this._calculatorIds || [
3297
3738
  SkyDateRangeCalculatorId.AnyTime,
3298
3739
  SkyDateRangeCalculatorId.Before,
3299
3740
  SkyDateRangeCalculatorId.After,
@@ -3315,8 +3756,8 @@ class SkyDateRangePickerComponent {
3315
3756
  SkyDateRangeCalculatorId.NextCalendarYear,
3316
3757
  SkyDateRangeCalculatorId.LastFiscalYear,
3317
3758
  SkyDateRangeCalculatorId.ThisFiscalYear,
3318
- SkyDateRangeCalculatorId.NextFiscalYear
3319
- ];
3759
+ SkyDateRangeCalculatorId.NextFiscalYear,
3760
+ ]);
3320
3761
  }
3321
3762
  /**
3322
3763
  * Specifies a date format for
@@ -3381,8 +3822,7 @@ class SkyDateRangePickerComponent {
3381
3822
  return this.formGroup.get('startDate');
3382
3823
  }
3383
3824
  get value() {
3384
- if (this._value &&
3385
- this._value.calculatorId !== undefined) {
3825
+ if (this._value && this._value.calculatorId !== undefined) {
3386
3826
  return this._value;
3387
3827
  }
3388
3828
  return this.defaultValue;
@@ -3407,20 +3847,19 @@ class SkyDateRangePickerComponent {
3407
3847
  /* istanbul ignore else */
3408
3848
  if (this.control) {
3409
3849
  this.control.setValue(this.value, {
3410
- emitEvent: false
3850
+ emitEvent: false,
3411
3851
  });
3412
3852
  }
3413
3853
  });
3414
3854
  }
3415
3855
  ngOnChanges(changes) {
3416
- if (changes.calculatorIds &&
3417
- changes.calculatorIds.firstChange === false) {
3856
+ if (changes.calculatorIds && changes.calculatorIds.firstChange === false) {
3418
3857
  this.updateCalculators().then(() => {
3419
3858
  const id = this.calculatorIdControl.value;
3420
3859
  // Maintain the currently selected values if the calculators change after
3421
3860
  // a value has been chosen.
3422
3861
  const found = this.calculators.find((calculator) => {
3423
- return (calculator.calculatorId === id);
3862
+ return calculator.calculatorId === id;
3424
3863
  });
3425
3864
  /* istanbul ignore else */
3426
3865
  if (!found) {
@@ -3469,8 +3908,8 @@ class SkyDateRangePickerComponent {
3469
3908
  errors = {
3470
3909
  skyDateRange: {
3471
3910
  calculatorId: idControl.value,
3472
- errors: result
3473
- }
3911
+ errors: result,
3912
+ },
3474
3913
  };
3475
3914
  }
3476
3915
  else {
@@ -3520,7 +3959,7 @@ class SkyDateRangePickerComponent {
3520
3959
  this.formGroup = this.formBuilder.group({
3521
3960
  calculatorId: new FormControl(),
3522
3961
  startDate: new FormControl(),
3523
- endDate: new FormControl()
3962
+ endDate: new FormControl(),
3524
3963
  });
3525
3964
  if (this.disabled) {
3526
3965
  this.formGroup.disable();
@@ -3555,7 +3994,7 @@ class SkyDateRangePickerComponent {
3555
3994
  // listeners to be triggered, as those are reserved for user interactions.
3556
3995
  // (See the event listeners listed below.)
3557
3996
  this.formGroup.reset(value || this.value, {
3558
- emitEvent: false
3997
+ emitEvent: false,
3559
3998
  });
3560
3999
  }
3561
4000
  addEventListeners() {
@@ -3563,7 +4002,7 @@ class SkyDateRangePickerComponent {
3563
4002
  // when control is initialized with a value.
3564
4003
  combineLatest([
3565
4004
  this.startDateControl.statusChanges,
3566
- this.endDateControl.statusChanges
4005
+ this.endDateControl.statusChanges,
3567
4006
  ])
3568
4007
  .pipe(first())
3569
4008
  .subscribe((status) => {
@@ -3606,7 +4045,7 @@ class SkyDateRangePickerComponent {
3606
4045
  // Detect errors from the date inputs and update ng- classes on picker.
3607
4046
  combineLatest([
3608
4047
  this.startDateControl.statusChanges,
3609
- this.endDateControl.statusChanges
4048
+ this.endDateControl.statusChanges,
3610
4049
  ])
3611
4050
  .pipe(takeUntil(this.ngUnsubscribe))
3612
4051
  .subscribe(() => {
@@ -3627,15 +4066,15 @@ class SkyDateRangePickerComponent {
3627
4066
  });
3628
4067
  }
3629
4068
  dateRangesEqual(rangeA, rangeB) {
3630
- return (JSON.stringify(rangeA) === JSON.stringify(rangeB));
4069
+ return JSON.stringify(rangeA) === JSON.stringify(rangeB);
3631
4070
  }
3632
4071
  }
3633
- SkyDateRangePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDateRangeService }, { token: i2$2.FormBuilder }, { token: i3.SkyAppLocaleProvider }, { token: i1.SkyAppWindowRef }, { token: i3$2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3634
- SkyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDateRangePickerComponent, selector: "sky-date-range-picker", inputs: { calculatorIds: "calculatorIds", dateFormat: "dateFormat", disabled: "disabled", label: "label", startDateRequired: "startDateRequired", endDateRequired: "endDateRequired" }, providers: [
4072
+ SkyDateRangePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDateRangeService }, { token: i2$2.FormBuilder }, { token: i3.SkyAppLocaleProvider }, { token: i1.SkyAppWindowRef }, { token: i3$2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4073
+ SkyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDateRangePickerComponent, selector: "sky-date-range-picker", inputs: { calculatorIds: "calculatorIds", dateFormat: "dateFormat", disabled: "disabled", label: "label", startDateRequired: "startDateRequired", endDateRequired: "endDateRequired" }, providers: [
3635
4074
  SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR,
3636
- SKY_DATE_RANGE_PICKER_VALIDATOR
3637
- ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isReady\"\n class=\"sky-date-range-picker\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"sky-date-range-picker-form-group\"\n >\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-select-calculator'\"\n >\n {{ label || 'skyux_date_range_picker_default_label' | skyLibResources }}\n </label>\n <select\n class=\"sky-form-control\"\n formControlName=\"calculatorId\"\n [attr.id]=\"dateRangePickerId + '-select-calculator'\"\n (blur)=\"onFieldBlur()\"\n >\n <option *ngFor=\"let calculator of calculators\"\n [value]=\"calculator.calculatorId\"\n >\n {{ calculator.shortDescription }}\n </option>\n </select>\n </sky-input-box>\n </div>\n\n <div\n class=\"sky-date-range-picker-form-group\"\n [hidden]=\"!showStartDatePicker\"\n >\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-start-date'\"\n [ngClass]=\"{ 'sky-control-label-required' : startDateRequired }\"\n >\n {{ startDateLabelResourceKey | skyLibResources }}\n </label>\n\n <sky-datepicker>\n <input\n formControlName=\"startDate\"\n [attr.aria-label]=\"startDateLabelResourceKey | skyLibResources\"\n [attr.id]=\"dateRangePickerId + '-start-date'\"\n [attr.placeholder]=\"dateFormat\"\n [required]=\"startDateRequired\"\n [dateFormat]=\"dateFormat\"\n (blur)=\"onFieldBlur()\"\n skyDatepickerInput\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n\n <div\n class=\"sky-date-range-picker-form-group\"\n [hidden]=\"!showEndDatePicker\"\n >\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-end-date'\"\n [ngClass]=\"{ 'sky-control-label-required' : endDateRequired }\"\n >\n {{ endDateLabelResourceKey | skyLibResources }}\n </label>\n\n <sky-datepicker>\n <input\n formControlName=\"endDate\"\n skyDatepickerInput\n [attr.aria-label]=\"endDateLabelResourceKey | skyLibResources\"\n [attr.id]=\"dateRangePickerId + '-end-date'\"\n [attr.placeholder]=\"dateFormat\"\n [dateFormat]=\"dateFormat\"\n [required]=\"endDateRequired\"\n (blur)=\"onFieldBlur()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker{display:flex;margin-left:-5px;margin-right:-5px}.sky-date-range-picker-form-group{padding-left:5px;padding-right:5px}.sky-date-range-picker-form-group:last-child{margin-bottom:0}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:calc(100% / 3);margin-bottom:0}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:calc(100% / 3);margin-bottom:0}:host-context(.sky-theme-modern) .sky-date-range-picker-form-group{padding:0;margin:0 0 20px}@media (min-width: 768px){:host-context(.sky-theme-modern) .sky-date-range-picker-form-group{margin:0 20px 0 0}}.sky-theme-modern .sky-date-range-picker-form-group{padding:0;margin:0 0 20px}@media (min-width: 768px){.sky-theme-modern .sky-date-range-picker-form-group{margin:0 20px 0 0}}:host-context(.sky-theme-modern .sky-responsive-container-xs) .sky-date-range-picker-form-group{margin:0 0 20px}:host-context(.sky-theme-modern .sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-theme-modern .sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-theme-modern .sky-responsive-container-lg) .sky-date-range-picker-form-group{margin:0 20px 0 0}\n"], components: [{ type: i2$1.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled"] }, { type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
3638
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{
4075
+ SKY_DATE_RANGE_PICKER_VALIDATOR,
4076
+ ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isReady\" class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div class=\"sky-date-range-picker-form-group\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-select-calculator'\"\n >\n {{ label || 'skyux_date_range_picker_default_label' | skyLibResources }}\n </label>\n <select\n class=\"sky-form-control\"\n formControlName=\"calculatorId\"\n [attr.id]=\"dateRangePickerId + '-select-calculator'\"\n (blur)=\"onFieldBlur()\"\n >\n <option\n *ngFor=\"let calculator of calculators\"\n [value]=\"calculator.calculatorId\"\n >\n {{ calculator.shortDescription }}\n </option>\n </select>\n </sky-input-box>\n </div>\n\n <div class=\"sky-date-range-picker-form-group\" [hidden]=\"!showStartDatePicker\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-start-date'\"\n [ngClass]=\"{ 'sky-control-label-required': startDateRequired }\"\n >\n {{ startDateLabelResourceKey | skyLibResources }}\n </label>\n\n <sky-datepicker>\n <input\n formControlName=\"startDate\"\n [attr.aria-label]=\"startDateLabelResourceKey | skyLibResources\"\n [attr.id]=\"dateRangePickerId + '-start-date'\"\n [attr.placeholder]=\"dateFormat\"\n [required]=\"startDateRequired\"\n [dateFormat]=\"dateFormat\"\n (blur)=\"onFieldBlur()\"\n skyDatepickerInput\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n\n <div class=\"sky-date-range-picker-form-group\" [hidden]=\"!showEndDatePicker\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-end-date'\"\n [ngClass]=\"{ 'sky-control-label-required': endDateRequired }\"\n >\n {{ endDateLabelResourceKey | skyLibResources }}\n </label>\n\n <sky-datepicker>\n <input\n formControlName=\"endDate\"\n skyDatepickerInput\n [attr.aria-label]=\"endDateLabelResourceKey | skyLibResources\"\n [attr.id]=\"dateRangePickerId + '-end-date'\"\n [attr.placeholder]=\"dateFormat\"\n [dateFormat]=\"dateFormat\"\n [required]=\"endDateRequired\"\n (blur)=\"onFieldBlur()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker{display:flex;margin-left:-5px;margin-right:-5px}.sky-date-range-picker-form-group{padding-left:5px;padding-right:5px}.sky-date-range-picker-form-group:last-child{margin-bottom:0}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:calc(100% / 3);margin-bottom:0}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:calc(100% / 3);margin-bottom:0}:host-context(.sky-theme-modern) .sky-date-range-picker-form-group{padding:0;margin:0 0 20px}@media (min-width: 768px){:host-context(.sky-theme-modern) .sky-date-range-picker-form-group{margin:0 20px 0 0}}.sky-theme-modern .sky-date-range-picker-form-group{padding:0;margin:0 0 20px}@media (min-width: 768px){.sky-theme-modern .sky-date-range-picker-form-group{margin:0 20px 0 0}}:host-context(.sky-theme-modern .sky-responsive-container-xs) .sky-date-range-picker-form-group{margin:0 0 20px}:host-context(.sky-theme-modern .sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-theme-modern .sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-theme-modern .sky-responsive-container-lg) .sky-date-range-picker-form-group{margin:0 20px 0 0}\n"], components: [{ type: i2$1.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled"] }, { type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4077
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{
3639
4078
  type: Component,
3640
4079
  args: [{
3641
4080
  selector: 'sky-date-range-picker',
@@ -3643,9 +4082,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
3643
4082
  styleUrls: ['./date-range-picker.component.scss'],
3644
4083
  providers: [
3645
4084
  SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR,
3646
- SKY_DATE_RANGE_PICKER_VALIDATOR
4085
+ SKY_DATE_RANGE_PICKER_VALIDATOR,
3647
4086
  ],
3648
- changeDetection: ChangeDetectionStrategy.OnPush
4087
+ changeDetection: ChangeDetectionStrategy.OnPush,
3649
4088
  }]
3650
4089
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: SkyDateRangeService }, { type: i2$2.FormBuilder }, { type: i3.SkyAppLocaleProvider }, { type: i1.SkyAppWindowRef }, { type: i3$2.SkyThemeService, decorators: [{
3651
4090
  type: Optional
@@ -3665,29 +4104,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
3665
4104
 
3666
4105
  class SkyDateRangePickerModule {
3667
4106
  }
3668
- SkyDateRangePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3669
- SkyDateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangePickerModule, declarations: [SkyDateRangePickerComponent], imports: [CommonModule,
4107
+ SkyDateRangePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4108
+ SkyDateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangePickerModule, declarations: [SkyDateRangePickerComponent], imports: [CommonModule,
3670
4109
  FormsModule,
3671
4110
  ReactiveFormsModule,
3672
4111
  SkyI18nModule,
3673
4112
  SkyDatepickerModule,
3674
4113
  SkyDatetimeResourcesModule,
3675
4114
  SkyInputBoxModule], exports: [SkyDateRangePickerComponent] });
3676
- SkyDateRangePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangePickerModule, imports: [[
4115
+ SkyDateRangePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangePickerModule, providers: [SkyDateRangeService], imports: [[
3677
4116
  CommonModule,
3678
4117
  FormsModule,
3679
4118
  ReactiveFormsModule,
3680
4119
  SkyI18nModule,
3681
4120
  SkyDatepickerModule,
3682
4121
  SkyDatetimeResourcesModule,
3683
- SkyInputBoxModule
4122
+ SkyInputBoxModule,
3684
4123
  ]] });
3685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDateRangePickerModule, decorators: [{
4124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyDateRangePickerModule, decorators: [{
3686
4125
  type: NgModule,
3687
4126
  args: [{
3688
- declarations: [
3689
- SkyDateRangePickerComponent
3690
- ],
4127
+ declarations: [SkyDateRangePickerComponent],
3691
4128
  imports: [
3692
4129
  CommonModule,
3693
4130
  FormsModule,
@@ -3695,11 +4132,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
3695
4132
  SkyI18nModule,
3696
4133
  SkyDatepickerModule,
3697
4134
  SkyDatetimeResourcesModule,
3698
- SkyInputBoxModule
4135
+ SkyInputBoxModule,
3699
4136
  ],
3700
- exports: [
3701
- SkyDateRangePickerComponent
3702
- ]
4137
+ exports: [SkyDateRangePickerComponent],
4138
+ providers: [SkyDateRangeService],
3703
4139
  }]
3704
4140
  }] });
3705
4141
 
@@ -3707,12 +4143,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
3707
4143
  const SKY_TIMEPICKER_VALUE_ACCESSOR = {
3708
4144
  provide: NG_VALUE_ACCESSOR,
3709
4145
  useExisting: forwardRef(() => SkyTimepickerInputDirective),
3710
- multi: true
4146
+ multi: true,
3711
4147
  };
3712
4148
  const SKY_TIMEPICKER_VALIDATOR = {
3713
4149
  provide: NG_VALIDATORS,
3714
4150
  useExisting: forwardRef(() => SkyTimepickerInputDirective),
3715
- multi: true
4151
+ multi: true,
3716
4152
  };
3717
4153
  // tslint:enable
3718
4154
  class SkyTimepickerInputDirective {
@@ -3778,14 +4214,15 @@ class SkyTimepickerInputDirective {
3778
4214
  }
3779
4215
  ngOnInit() {
3780
4216
  this.renderer.addClass(this.elRef.nativeElement, 'sky-form-control');
3781
- this.pickerChangedSubscription = this.skyTimepickerInput.selectedTimeChanged
3782
- .subscribe((newTime) => {
3783
- this.writeValue(newTime);
3784
- this._onTouched();
3785
- });
4217
+ this.pickerChangedSubscription =
4218
+ this.skyTimepickerInput.selectedTimeChanged.subscribe((newTime) => {
4219
+ this.writeValue(newTime);
4220
+ this._onTouched();
4221
+ });
3786
4222
  /* istanbul ignore else */
3787
4223
  if (!this.elRef.nativeElement.getAttribute('aria-label')) {
3788
- this.resourcesService.getString('skyux_timepicker_input_default_label')
4224
+ this.resourcesService
4225
+ .getString('skyux_timepicker_input_default_label')
3789
4226
  .subscribe((value) => {
3790
4227
  this.renderer.setAttribute(this.elRef.nativeElement, 'aria-label', value);
3791
4228
  });
@@ -3796,7 +4233,7 @@ class SkyTimepickerInputDirective {
3796
4233
  /* istanbul ignore else */
3797
4234
  if (this.control && this.control.parent) {
3798
4235
  this.control.setValue(this.modelValue, {
3799
- emitEvent: false
4236
+ emitEvent: false,
3800
4237
  });
3801
4238
  this.changeDetector.markForCheck();
3802
4239
  }
@@ -3815,9 +4252,15 @@ class SkyTimepickerInputDirective {
3815
4252
  onBlur() {
3816
4253
  this._onTouched();
3817
4254
  }
3818
- registerOnChange(fn) { this._onChange = fn; }
3819
- registerOnTouched(fn) { this._onTouched = fn; }
3820
- registerOnValidatorChange(fn) { this._validatorChange = fn; }
4255
+ registerOnChange(fn) {
4256
+ this._onChange = fn;
4257
+ }
4258
+ registerOnTouched(fn) {
4259
+ this._onTouched = fn;
4260
+ }
4261
+ registerOnValidatorChange(fn) {
4262
+ this._validatorChange = fn;
4263
+ }
3821
4264
  setDisabledState(isDisabled) {
3822
4265
  this.disabled = isDisabled;
3823
4266
  }
@@ -3835,9 +4278,9 @@ class SkyTimepickerInputDirective {
3835
4278
  /* istanbul ignore next */
3836
4279
  if (value.local === 'Invalid date') {
3837
4280
  return {
3838
- 'skyTime': {
3839
- invalid: control.value
3840
- }
4281
+ skyTime: {
4282
+ invalid: control.value,
4283
+ },
3841
4284
  };
3842
4285
  }
3843
4286
  return undefined;
@@ -3873,13 +4316,13 @@ class SkyTimepickerInputDirective {
3873
4316
  this.returnFormat = currentFormat;
3874
4317
  }
3875
4318
  formatTime = {
3876
- 'hour': moment(time, currentFormat).hour(),
3877
- 'minute': moment(time, currentFormat).minute(),
3878
- 'meridie': moment(time, currentFormat).format('A'),
3879
- 'timezone': parseInt(moment(time, currentFormat).format('Z'), 10),
3880
- 'iso8601': moment(time, currentFormat).toDate(),
3881
- 'local': moment(time, currentFormat).format(currentFormat),
3882
- 'customFormat': this.returnFormat
4319
+ hour: moment(time, currentFormat).hour(),
4320
+ minute: moment(time, currentFormat).minute(),
4321
+ meridie: moment(time, currentFormat).format('A'),
4322
+ timezone: parseInt(moment(time, currentFormat).format('Z'), 10),
4323
+ iso8601: moment(time, currentFormat).toDate(),
4324
+ local: moment(time, currentFormat).format(currentFormat),
4325
+ customFormat: this.returnFormat,
3883
4326
  };
3884
4327
  return formatTime;
3885
4328
  }
@@ -3894,19 +4337,13 @@ class SkyTimepickerInputDirective {
3894
4337
  }
3895
4338
  }
3896
4339
  }
3897
- SkyTimepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
3898
- SkyTimepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: SkyTimepickerInputDirective, selector: "[skyTimepickerInput]", inputs: { skyTimepickerInput: "skyTimepickerInput", timeFormat: "timeFormat", returnFormat: "returnFormat", disabled: "disabled" }, host: { listeners: { "change": "onChange($event)", "blur": "onBlur()" } }, providers: [
3899
- SKY_TIMEPICKER_VALUE_ACCESSOR,
3900
- SKY_TIMEPICKER_VALIDATOR
3901
- ], usesOnChanges: true, ngImport: i0 });
3902
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerInputDirective, decorators: [{
4340
+ SkyTimepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
4341
+ SkyTimepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.14", 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 });
4342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerInputDirective, decorators: [{
3903
4343
  type: Directive,
3904
4344
  args: [{
3905
4345
  selector: '[skyTimepickerInput]',
3906
- providers: [
3907
- SKY_TIMEPICKER_VALUE_ACCESSOR,
3908
- SKY_TIMEPICKER_VALIDATOR
3909
- ]
4346
+ providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR],
3910
4347
  }]
3911
4348
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { skyTimepickerInput: [{
3912
4349
  type: Input
@@ -3972,10 +4409,10 @@ class SkyTimepickerComponent {
3972
4409
  if (this.is8601) {
3973
4410
  hourOffset = 0;
3974
4411
  }
3975
- hour = moment({ 'hour': setHour }).add(hourOffset, 'hours').hour();
4412
+ hour = moment({ hour: setHour }).add(hourOffset, 'hours').hour();
3976
4413
  this.activeTime = moment({
3977
- 'hour': hour,
3978
- 'minute': moment(this.activeTime).get('minute') + 0
4414
+ hour: hour,
4415
+ minute: moment(this.activeTime).get('minute') + 0,
3979
4416
  }).toDate();
3980
4417
  this.selectedTimeChanged.emit(this.selectedTime);
3981
4418
  }
@@ -4006,8 +4443,8 @@ class SkyTimepickerComponent {
4006
4443
  }
4007
4444
  set selectedMinute(minute) {
4008
4445
  this.activeTime = moment({
4009
- 'hour': moment(this.activeTime).get('hour') + 0,
4010
- 'minute': minute
4446
+ hour: moment(this.activeTime).get('hour') + 0,
4447
+ minute: minute,
4011
4448
  }).toDate();
4012
4449
  this.selectedTimeChanged.emit(this.selectedTime);
4013
4450
  }
@@ -4032,8 +4469,9 @@ class SkyTimepickerComponent {
4032
4469
  timezone: parseInt(moment(this.activeTime).format('Z'), 10),
4033
4470
  iso8601: this.activeTime,
4034
4471
  local: moment(this.activeTime).format(this.localeFormat),
4035
- customFormat: (typeof this.returnFormat !== 'undefined')
4036
- ? this.returnFormat : this.localeFormat
4472
+ customFormat: typeof this.returnFormat !== 'undefined'
4473
+ ? this.returnFormat
4474
+ : this.localeFormat,
4037
4475
  };
4038
4476
  return time;
4039
4477
  }
@@ -4061,7 +4499,7 @@ class SkyTimepickerComponent {
4061
4499
  if (this.inputBoxHostService) {
4062
4500
  this.inputBoxHostService.populate({
4063
4501
  inputTemplate: this.inputTemplateRef,
4064
- buttonsTemplate: this.triggerButtonTemplateRef
4502
+ buttonsTemplate: this.triggerButtonTemplateRef,
4065
4503
  });
4066
4504
  }
4067
4505
  }
@@ -4093,8 +4531,7 @@ class SkyTimepickerComponent {
4093
4531
  }
4094
4532
  let data;
4095
4533
  data = {
4096
- 'hours': Array.apply(undefined, Array(h))
4097
- .map(function (x, i) {
4534
+ hours: Array.apply(undefined, Array(h)).map(function (x, i) {
4098
4535
  if (format === 'hh') {
4099
4536
  return ++i;
4100
4537
  }
@@ -4106,12 +4543,11 @@ class SkyTimepickerComponent {
4106
4543
  /* sanity check */
4107
4544
  return 0;
4108
4545
  }),
4109
- 'minutes': Array.apply(undefined, Array(m))
4110
- .map(function (x, i) {
4546
+ minutes: Array.apply(undefined, Array(m)).map(function (x, i) {
4111
4547
  return i * minuteMultiplier;
4112
4548
  }),
4113
- 'localeFormat': localeFormat,
4114
- 'minuteMultiplier': minuteMultiplier
4549
+ localeFormat: localeFormat,
4550
+ minuteMultiplier: minuteMultiplier,
4115
4551
  };
4116
4552
  this.hours = data.hours;
4117
4553
  this.minutes = data.minutes;
@@ -4165,7 +4601,7 @@ class SkyTimepickerComponent {
4165
4601
  affixer.placementChange
4166
4602
  .pipe(takeUntil(this.timepickerUnsubscribe))
4167
4603
  .subscribe((change) => {
4168
- this.isVisible = (change.placement !== null);
4604
+ this.isVisible = change.placement !== null;
4169
4605
  this.changeDetector.markForCheck();
4170
4606
  });
4171
4607
  affixer.affixTo(this.triggerButtonRef.nativeElement, {
@@ -4173,7 +4609,7 @@ class SkyTimepickerComponent {
4173
4609
  enableAutoFit: true,
4174
4610
  horizontalAlignment: 'right',
4175
4611
  isSticky: true,
4176
- placement: 'below'
4612
+ placement: 'below',
4177
4613
  });
4178
4614
  this.affixer = affixer;
4179
4615
  }
@@ -4187,7 +4623,7 @@ class SkyTimepickerComponent {
4187
4623
  createOverlay() {
4188
4624
  const overlay = this.overlayService.create({
4189
4625
  enableClose: false,
4190
- enablePointerEvents: false
4626
+ enablePointerEvents: false,
4191
4627
  });
4192
4628
  overlay.backdropClick
4193
4629
  .pipe(takeUntil(this.timepickerUnsubscribe))
@@ -4232,16 +4668,16 @@ class SkyTimepickerComponent {
4232
4668
  (_a = this.overlayKeydownListner) === null || _a === void 0 ? void 0 : _a.unsubscribe();
4233
4669
  }
4234
4670
  }
4235
- SkyTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2$1.SkyInputBoxHostService, optional: true }, { token: i3$2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4236
- SkyTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-timepicker\"\n>\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div\n class=\"sky-input-group\"\n >\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"clock-o\"\n size=\"lg\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div\n class=\"sky-timepicker-content\"\n >\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour':is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours;\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active' : selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{hour}}\n </button>\n </li>\n </ol>\n </section>\n <section\n class=\"sky-timepicker-column\"\n >\n <ol>\n <li *ngFor=\"let minute of minutes;\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00' .substring(0, 2 - (minute) .toString() .length) + (minute) }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\"\n class=\"sky-timepicker-column\"\n >\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div\n class=\"sky-timepicker-footer\"\n >\n <section\n class=\"sky-timepicker-column\"\n >\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;grid-column-gap:1px;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern{display:none}.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerComponent, decorators: [{
4671
+ SkyTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2$1.SkyInputBoxHostService, optional: true }, { token: i3$2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4672
+ SkyTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;grid-column-gap:1px;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern{display:none}.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerComponent, decorators: [{
4238
4674
  type: Component,
4239
4675
  args: [{
4240
4676
  selector: 'sky-timepicker',
4241
4677
  templateUrl: './timepicker.component.html',
4242
4678
  styleUrls: ['./timepicker.component.scss'],
4243
4679
  encapsulation: ViewEncapsulation.None,
4244
- changeDetection: ChangeDetectionStrategy.OnPush
4680
+ changeDetection: ChangeDetectionStrategy.OnPush,
4245
4681
  }]
4246
4682
  }], ctorParameters: function () { return [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2$1.SkyInputBoxHostService, decorators: [{
4247
4683
  type: Optional
@@ -4252,60 +4688,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
4252
4688
  }], timepickerRef: [{
4253
4689
  type: ViewChild,
4254
4690
  args: ['timepickerRef', {
4255
- read: ElementRef
4691
+ read: ElementRef,
4256
4692
  }]
4257
4693
  }], timepickerTemplateRef: [{
4258
4694
  type: ViewChild,
4259
4695
  args: ['timepickerTemplateRef', {
4260
- read: TemplateRef
4696
+ read: TemplateRef,
4261
4697
  }]
4262
4698
  }], triggerButtonRef: [{
4263
4699
  type: ViewChild,
4264
4700
  args: ['triggerButtonRef', {
4265
- read: ElementRef
4701
+ read: ElementRef,
4266
4702
  }]
4267
4703
  }], inputTemplateRef: [{
4268
4704
  type: ViewChild,
4269
4705
  args: ['inputTemplateRef', {
4270
4706
  read: TemplateRef,
4271
- static: true
4707
+ static: true,
4272
4708
  }]
4273
4709
  }], triggerButtonTemplateRef: [{
4274
4710
  type: ViewChild,
4275
4711
  args: ['triggerButtonTemplateRef', {
4276
4712
  read: TemplateRef,
4277
- static: true
4713
+ static: true,
4278
4714
  }]
4279
4715
  }] } });
4280
4716
 
4281
4717
  class SkyTimepickerModule {
4282
4718
  }
4283
- SkyTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4284
- SkyTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective,
4285
- SkyTimepickerComponent], imports: [CommonModule,
4719
+ SkyTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4720
+ SkyTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent], imports: [CommonModule,
4286
4721
  SkyI18nModule,
4287
4722
  SkyIconModule,
4288
4723
  SkyDatetimeResourcesModule,
4289
4724
  SkyAffixModule,
4290
4725
  SkyOverlayModule,
4291
- SkyThemeModule], exports: [SkyTimepickerInputDirective,
4292
- SkyTimepickerComponent] });
4293
- SkyTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerModule, imports: [[
4726
+ SkyThemeModule], exports: [SkyTimepickerInputDirective, SkyTimepickerComponent] });
4727
+ SkyTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerModule, imports: [[
4294
4728
  CommonModule,
4295
4729
  SkyI18nModule,
4296
4730
  SkyIconModule,
4297
4731
  SkyDatetimeResourcesModule,
4298
4732
  SkyAffixModule,
4299
4733
  SkyOverlayModule,
4300
- SkyThemeModule
4734
+ SkyThemeModule,
4301
4735
  ]] });
4302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyTimepickerModule, decorators: [{
4736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: SkyTimepickerModule, decorators: [{
4303
4737
  type: NgModule,
4304
4738
  args: [{
4305
- declarations: [
4306
- SkyTimepickerInputDirective,
4307
- SkyTimepickerComponent
4308
- ],
4739
+ declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent],
4309
4740
  imports: [
4310
4741
  CommonModule,
4311
4742
  SkyI18nModule,
@@ -4313,12 +4744,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
4313
4744
  SkyDatetimeResourcesModule,
4314
4745
  SkyAffixModule,
4315
4746
  SkyOverlayModule,
4316
- SkyThemeModule
4747
+ SkyThemeModule,
4317
4748
  ],
4318
- exports: [
4319
- SkyTimepickerInputDirective,
4320
- SkyTimepickerComponent
4321
- ]
4749
+ exports: [SkyTimepickerInputDirective, SkyTimepickerComponent],
4322
4750
  }]
4323
4751
  }] });
4324
4752