@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,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@skyux/i18n'), require('moment'), require('@angular/common'), require('@angular/forms'), require('@skyux/forms'), require('@skyux/core'), require('@skyux/indicators'), require('@skyux/theme')) :
3
- typeof define === 'function' && define.amd ? define('@skyux/datetime', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@skyux/i18n', 'moment', '@angular/common', '@angular/forms', '@skyux/forms', '@skyux/core', '@skyux/indicators', '@skyux/theme'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.skyux = global.skyux || {}, global.skyux.datetime = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.i3, global.moment, global.ng.common, global.ng.forms, global.i2$1, global.i1, global.i2, global.i3$2));
5
- })(this, (function (exports, i0, rxjs, operators, i3, moment, i3$1, i2$2, i2$1, i1, i2, i3$2) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@skyux/i18n'), require('moment'), require('@angular/common'), require('@angular/forms'), require('@skyux/forms'), require('@skyux/core'), require('@skyux/indicators'), require('@skyux/theme'), require('@skyux/popovers')) :
3
+ typeof define === 'function' && define.amd ? define('@skyux/datetime', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@skyux/i18n', 'moment', '@angular/common', '@angular/forms', '@skyux/forms', '@skyux/core', '@skyux/indicators', '@skyux/theme', '@skyux/popovers'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.skyux = global.skyux || {}, global.skyux.datetime = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.i3, global.moment, global.ng.common, global.ng.forms, global.i2$1, global.i1, global.i2, global.i3$2, global.i3$1));
5
+ })(this, (function (exports, i0, rxjs, operators, i3, moment, i5, i2$2, i2$1, i1, i2, i3$2, i3$1) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -27,12 +27,13 @@
27
27
  var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
28
28
  var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
29
29
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
30
- var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
30
+ var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
31
31
  var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$2);
32
32
  var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2$1);
33
33
  var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
34
34
  var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
35
35
  var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$2);
36
+ var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
36
37
 
37
38
  // This class is mostly ported from the Angular 4.x DatePipe in order to maintain the old
38
39
  var SkyDateFormatUtility = /** @class */ (function () {
@@ -63,14 +64,14 @@
63
64
  return SkyDateFormatUtility;
64
65
  }());
65
66
  SkyDateFormatUtility._ALIASES = {
66
- 'medium': 'yMMMdjms',
67
- 'short': 'yMdjm',
68
- 'fullDate': 'yMMMMEEEEd',
69
- 'longDate': 'yMMMMd',
70
- 'mediumDate': 'yMMMd',
71
- 'shortDate': 'yMd',
72
- 'mediumTime': 'jms',
73
- 'shortTime': 'jm'
67
+ medium: 'yMMMdjms',
68
+ short: 'yMdjm',
69
+ fullDate: 'yMMMMEEEEd',
70
+ longDate: 'yMMMMd',
71
+ mediumDate: 'yMMMd',
72
+ shortDate: 'yMd',
73
+ mediumTime: 'jms',
74
+ shortTime: 'jm',
74
75
  };
75
76
  function isBlank(obj) {
76
77
  return !obj;
@@ -95,7 +96,8 @@
95
96
  this.defaultFormat = 'short';
96
97
  this.defaultLocale = 'en-US';
97
98
  this.ngUnsubscribe = new rxjs.Subject();
98
- this.localeProvider.getLocaleInfo()
99
+ this.localeProvider
100
+ .getLocaleInfo()
99
101
  .pipe(operators.takeUntil(this.ngUnsubscribe))
100
102
  .subscribe(function (localeInfo) {
101
103
  _this.defaultLocale = localeInfo.locale;
@@ -128,13 +130,13 @@
128
130
  };
129
131
  return SkyDatePipe;
130
132
  }());
131
- SkyDatePipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipe, deps: [{ token: i3__namespace.SkyAppLocaleProvider }], target: i0__namespace.ɵɵFactoryTarget.Pipe });
132
- SkyDatePipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipe, name: "skyDate", pure: false });
133
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipe, decorators: [{
133
+ SkyDatePipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipe, deps: [{ token: i3__namespace.SkyAppLocaleProvider }], target: i0__namespace.ɵɵFactoryTarget.Pipe });
134
+ SkyDatePipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipe, name: "skyDate", pure: false });
135
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipe, decorators: [{
134
136
  type: i0.Pipe,
135
137
  args: [{
136
138
  name: 'skyDate',
137
- pure: false
139
+ pure: false,
138
140
  }]
139
141
  }], ctorParameters: function () { return [{ type: i3__namespace.SkyAppLocaleProvider }]; } });
140
142
 
@@ -145,10 +147,93 @@
145
147
  * To update this file, simply rerun the command.
146
148
  */
147
149
  var RESOURCES = {
148
- '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" } },
149
- '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" } },
150
- '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" } },
151
- '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" } },
150
+ 'EN-AU': {
151
+ skyux_date_range_picker_format_label_last_fiscal_year: {
152
+ message: 'Last financial year',
153
+ },
154
+ skyux_date_range_picker_format_label_this_fiscal_year: {
155
+ message: 'This financial year',
156
+ },
157
+ skyux_date_range_picker_format_label_next_fiscal_year: {
158
+ message: 'Next financial year',
159
+ },
160
+ },
161
+ 'EN-GB': {
162
+ skyux_date_range_picker_format_label_last_fiscal_year: {
163
+ message: 'Last financial year',
164
+ },
165
+ skyux_date_range_picker_format_label_this_fiscal_year: {
166
+ message: 'This financial year',
167
+ },
168
+ skyux_date_range_picker_format_label_next_fiscal_year: {
169
+ message: 'Next financial year',
170
+ },
171
+ },
172
+ 'EN-NZ': {
173
+ skyux_date_range_picker_format_label_last_fiscal_year: {
174
+ message: 'Last financial year',
175
+ },
176
+ skyux_date_range_picker_format_label_this_fiscal_year: {
177
+ message: 'This financial year',
178
+ },
179
+ skyux_date_range_picker_format_label_next_fiscal_year: {
180
+ message: 'Next financial year',
181
+ },
182
+ },
183
+ 'EN-US': {
184
+ skyux_date_field_default_label: { message: 'Date' },
185
+ skyux_datepicker_trigger_button_label: { message: 'Select date' },
186
+ skyux_timepicker_button_label: { message: 'Choose time' },
187
+ skyux_timepicker_close: { message: 'Done' },
188
+ skyux_timepicker_input_default_label: { message: 'Time' },
189
+ skyux_date_range_picker_default_label: { message: 'Select a date range' },
190
+ skyux_date_range_picker_format_label_specific_range: {
191
+ message: 'Specific range',
192
+ },
193
+ skyux_date_range_picker_format_label_before: { message: 'Before' },
194
+ skyux_date_range_picker_format_label_after: { message: 'After' },
195
+ skyux_date_range_picker_format_label_any_time: { message: 'At any time' },
196
+ skyux_date_range_picker_format_label_yesterday: { message: 'Yesterday' },
197
+ skyux_date_range_picker_format_label_today: { message: 'Today' },
198
+ skyux_date_range_picker_format_label_tomorrow: { message: 'Tomorrow' },
199
+ skyux_date_range_picker_format_label_last_week: { message: 'Last week' },
200
+ skyux_date_range_picker_format_label_this_week: { message: 'This week' },
201
+ skyux_date_range_picker_format_label_next_week: { message: 'Next week' },
202
+ skyux_date_range_picker_format_label_last_month: { message: 'Last month' },
203
+ skyux_date_range_picker_format_label_this_month: { message: 'This month' },
204
+ skyux_date_range_picker_format_label_next_month: { message: 'Next month' },
205
+ skyux_date_range_picker_format_label_last_quarter: {
206
+ message: 'Last quarter',
207
+ },
208
+ skyux_date_range_picker_format_label_this_quarter: {
209
+ message: 'This quarter',
210
+ },
211
+ skyux_date_range_picker_format_label_next_quarter: {
212
+ message: 'Next quarter',
213
+ },
214
+ skyux_date_range_picker_format_label_last_calendar_year: {
215
+ message: 'Last calendar year',
216
+ },
217
+ skyux_date_range_picker_format_label_this_calendar_year: {
218
+ message: 'This calendar year',
219
+ },
220
+ skyux_date_range_picker_format_label_next_calendar_year: {
221
+ message: 'Next calendar year',
222
+ },
223
+ skyux_date_range_picker_format_label_last_fiscal_year: {
224
+ message: 'Last fiscal year',
225
+ },
226
+ skyux_date_range_picker_format_label_this_fiscal_year: {
227
+ message: 'This fiscal year',
228
+ },
229
+ skyux_date_range_picker_format_label_next_fiscal_year: {
230
+ message: 'Next fiscal year',
231
+ },
232
+ skyux_date_range_picker_start_date_label: { message: 'From date' },
233
+ skyux_date_range_picker_end_date_label: { message: 'To date' },
234
+ skyux_date_range_picker_before_date_label: { message: 'Before date' },
235
+ skyux_date_range_picker_after_date_label: { message: 'After date' },
236
+ },
152
237
  };
153
238
  var SkyDatetimeResourcesProvider = /** @class */ (function () {
154
239
  function SkyDatetimeResourcesProvider() {
@@ -166,22 +251,26 @@
166
251
  }
167
252
  return SkyDatetimeResourcesModule;
168
253
  }());
169
- SkyDatetimeResourcesModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
170
- SkyDatetimeResourcesModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, exports: [i3.SkyI18nModule] });
171
- SkyDatetimeResourcesModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, providers: [{
254
+ SkyDatetimeResourcesModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
255
+ SkyDatetimeResourcesModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, exports: [i3.SkyI18nModule] });
256
+ SkyDatetimeResourcesModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, providers: [
257
+ {
172
258
  provide: i3.SKY_LIB_RESOURCES_PROVIDERS,
173
259
  useClass: SkyDatetimeResourcesProvider,
174
- multi: true
175
- }], imports: [i3.SkyI18nModule] });
176
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, decorators: [{
260
+ multi: true,
261
+ },
262
+ ], imports: [i3.SkyI18nModule] });
263
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatetimeResourcesModule, decorators: [{
177
264
  type: i0.NgModule,
178
265
  args: [{
179
266
  exports: [i3.SkyI18nModule],
180
- providers: [{
267
+ providers: [
268
+ {
181
269
  provide: i3.SKY_LIB_RESOURCES_PROVIDERS,
182
270
  useClass: SkyDatetimeResourcesProvider,
183
- multi: true
184
- }]
271
+ multi: true,
272
+ },
273
+ ],
185
274
  }]
186
275
  }] });
187
276
 
@@ -193,7 +282,8 @@
193
282
  var _this = this;
194
283
  this.localeProvider = localeProvider;
195
284
  this.ngUnsubscribe = new rxjs.Subject();
196
- this.localeProvider.getLocaleInfo()
285
+ this.localeProvider
286
+ .getLocaleInfo()
197
287
  .pipe(operators.takeUntil(this.ngUnsubscribe))
198
288
  .subscribe(function (localeInfo) {
199
289
  _this.currentLocale = localeInfo.locale;
@@ -268,7 +358,7 @@
268
358
  return;
269
359
  }
270
360
  var year = fuzzyDate.year || this.getDefaultYear(fuzzyDate);
271
- var month = fuzzyDate.month > 0 ? (fuzzyDate.month - 1) : 0;
361
+ var month = fuzzyDate.month > 0 ? fuzzyDate.month - 1 : 0;
272
362
  var day = fuzzyDate.day || 1;
273
363
  return moment__default["default"]([year, month, day]);
274
364
  };
@@ -287,7 +377,7 @@
287
377
  var dateComponents = [
288
378
  { value: fuzzyDate.year || 0, index: dateFormatIndexes.yearIndex },
289
379
  { value: fuzzyDate.month || 0, index: dateFormatIndexes.monthIndex },
290
- { value: fuzzyDate.day || 0, index: dateFormatIndexes.dayIndex }
380
+ { value: fuzzyDate.day || 0, index: dateFormatIndexes.dayIndex },
291
381
  ];
292
382
  dateComponents.sort(function (a, b) { return a.index - b.index; });
293
383
  dateComponents.forEach(function (component) {
@@ -342,18 +432,33 @@
342
432
  // is the month. Otherwise, we can assume the input is mm/dd or mm/yy (2-digit year).
343
433
  year = this.get4DigitYearFromDateString(date);
344
434
  if (year) {
345
- month = dateComponents[0] === year.toString() ? dateComponents[1] : dateComponents[0];
435
+ month =
436
+ dateComponents[0] === year.toString()
437
+ ? dateComponents[1]
438
+ : dateComponents[0];
346
439
  }
347
440
  else {
348
441
  if (indexes.dayIndex > -1) {
349
442
  // mm/dd
350
- month = (indexes.monthIndex < indexes.dayIndex) ? dateComponents[0] : dateComponents[1];
351
- day = (month === dateComponents[1]) ? dateComponents[0] : dateComponents[1];
443
+ month =
444
+ indexes.monthIndex < indexes.dayIndex
445
+ ? dateComponents[0]
446
+ : dateComponents[1];
447
+ day =
448
+ month === dateComponents[1]
449
+ ? dateComponents[0]
450
+ : dateComponents[1];
352
451
  }
353
452
  else {
354
453
  // mm/yy
355
- month = (indexes.monthIndex < indexes.yearIndex) ? dateComponents[0] : dateComponents[1];
356
- year = (month === dateComponents[1]) ? dateComponents[0] : dateComponents[1];
454
+ month =
455
+ indexes.monthIndex < indexes.yearIndex
456
+ ? dateComponents[0]
457
+ : dateComponents[1];
458
+ year =
459
+ month === dateComponents[1]
460
+ ? dateComponents[0]
461
+ : dateComponents[1];
357
462
  }
358
463
  }
359
464
  break;
@@ -372,14 +477,21 @@
372
477
  // Check if day is valid.
373
478
  if (day) {
374
479
  day = parseInt(day, 10);
375
- var fuzzyMoment = this.getMomentFromFuzzyDate({ month: month, day: day, year: year });
480
+ var fuzzyMoment = this.getMomentFromFuzzyDate({
481
+ month: month,
482
+ day: day,
483
+ year: year,
484
+ });
376
485
  if (isNaN(day) || !fuzzyMoment.isValid()) {
377
486
  return;
378
487
  }
379
488
  }
380
489
  }
381
490
  if (year) {
382
- year = year.toString().length === 2 ? moment__default["default"].parseTwoDigitYear(year) : parseInt(year.toString(), 10);
491
+ year =
492
+ year.toString().length === 2
493
+ ? moment__default["default"].parseTwoDigitYear(year)
494
+ : parseInt(year.toString(), 10);
383
495
  if (isNaN(year) || year.toString().length !== 4) {
384
496
  return;
385
497
  }
@@ -387,7 +499,7 @@
387
499
  return {
388
500
  month: month,
389
501
  day: day,
390
- year: year
502
+ year: year,
391
503
  };
392
504
  };
393
505
  SkyFuzzyDateService.prototype.getFuzzyDateRange = function (startFuzzyDate, endFuzzyDate) {
@@ -397,7 +509,10 @@
397
509
  var months;
398
510
  var years;
399
511
  var valid = false;
400
- if (startFuzzyDate && startFuzzyDate.year && endFuzzyDate && endFuzzyDate.year) {
512
+ if (startFuzzyDate &&
513
+ startFuzzyDate.year &&
514
+ endFuzzyDate &&
515
+ endFuzzyDate.year) {
401
516
  start = this.getMomentFromFuzzyDate(startFuzzyDate);
402
517
  end = this.getMomentFromFuzzyDate(endFuzzyDate);
403
518
  years = end.diff(start, 'years');
@@ -409,7 +524,7 @@
409
524
  years: years,
410
525
  months: months,
411
526
  days: days,
412
- valid: valid
527
+ valid: valid,
413
528
  };
414
529
  };
415
530
  SkyFuzzyDateService.prototype.getCurrentFuzzyDate = function () {
@@ -417,7 +532,7 @@
417
532
  return {
418
533
  day: currentDate.date(),
419
534
  month: currentDate.month() + 1,
420
- year: currentDate.year()
535
+ year: currentDate.year(),
421
536
  };
422
537
  };
423
538
  SkyFuzzyDateService.prototype.getMostRecentLeapYear = function () {
@@ -456,7 +571,7 @@
456
571
  }
457
572
  };
458
573
  SkyFuzzyDateService.prototype.isLeapYear = function (year) {
459
- return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);
574
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
460
575
  };
461
576
  SkyFuzzyDateService.prototype.getMonthNumber = function (month) {
462
577
  var returnValue;
@@ -496,7 +611,7 @@
496
611
  return {
497
612
  yearIndex: dateFormat.indexOf('y'),
498
613
  monthIndex: dateFormat.indexOf('m'),
499
- dayIndex: dateFormat.indexOf('d')
614
+ dayIndex: dateFormat.indexOf('d'),
500
615
  };
501
616
  };
502
617
  // Returns the index of each of the date components in the provided string (month, day, year).
@@ -512,11 +627,13 @@
512
627
  if (dateFormatIndexes.dayIndex > -1) {
513
628
  dateComponentIndexes.push(dateFormatIndexes.dayIndex);
514
629
  }
515
- dateComponentIndexes.sort(function (a, b) { return a - b; });
630
+ dateComponentIndexes.sort(function (a, b) {
631
+ return a - b;
632
+ });
516
633
  return {
517
634
  yearIndex: dateComponentIndexes.indexOf(dateFormatIndexes.yearIndex),
518
635
  monthIndex: dateComponentIndexes.indexOf(dateFormatIndexes.monthIndex),
519
- dayIndex: dateComponentIndexes.indexOf(dateFormatIndexes.dayIndex)
636
+ dayIndex: dateComponentIndexes.indexOf(dateFormatIndexes.dayIndex),
520
637
  };
521
638
  };
522
639
  /**
@@ -546,12 +663,12 @@
546
663
  };
547
664
  return SkyFuzzyDateService;
548
665
  }());
549
- SkyFuzzyDateService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDateService, deps: [{ token: i3__namespace.SkyAppLocaleProvider }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
550
- SkyFuzzyDateService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDateService, providedIn: 'root' });
551
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDateService, decorators: [{
666
+ SkyFuzzyDateService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDateService, deps: [{ token: i3__namespace.SkyAppLocaleProvider }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
667
+ SkyFuzzyDateService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDateService, providedIn: 'root' });
668
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDateService, decorators: [{
552
669
  type: i0.Injectable,
553
670
  args: [{
554
- providedIn: 'root'
671
+ providedIn: 'root',
555
672
  }]
556
673
  }], ctorParameters: function () { return [{ type: i3__namespace.SkyAppLocaleProvider }]; } });
557
674
 
@@ -589,13 +706,13 @@
589
706
  };
590
707
  return SkyFuzzyDatePipe;
591
708
  }());
592
- SkyFuzzyDatePipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDatePipe, deps: [{ token: SkyFuzzyDateService }], target: i0__namespace.ɵɵFactoryTarget.Pipe });
593
- SkyFuzzyDatePipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDatePipe, name: "skyFuzzyDate", pure: false });
594
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDatePipe, decorators: [{
709
+ SkyFuzzyDatePipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDatePipe, deps: [{ token: SkyFuzzyDateService }], target: i0__namespace.ɵɵFactoryTarget.Pipe });
710
+ SkyFuzzyDatePipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDatePipe, name: "skyFuzzyDate", pure: false });
711
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDatePipe, decorators: [{
595
712
  type: i0.Pipe,
596
713
  args: [{
597
714
  name: 'skyFuzzyDate',
598
- pure: false
715
+ pure: false,
599
716
  }]
600
717
  }], ctorParameters: function () { return [{ type: SkyFuzzyDateService }]; } });
601
718
 
@@ -604,37 +721,16 @@
604
721
  }
605
722
  return SkyDatePipeModule;
606
723
  }());
607
- SkyDatePipeModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipeModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
608
- SkyDatePipeModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipeModule, declarations: [SkyDatePipe,
609
- SkyFuzzyDatePipe], imports: [i3$1.CommonModule,
610
- SkyDatetimeResourcesModule], exports: [SkyDatePipe,
611
- SkyFuzzyDatePipe] });
612
- SkyDatePipeModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipeModule, providers: [
613
- SkyDatePipe,
614
- SkyFuzzyDatePipe
615
- ], imports: [[
616
- i3$1.CommonModule,
617
- SkyDatetimeResourcesModule
618
- ]] });
619
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatePipeModule, decorators: [{
724
+ SkyDatePipeModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipeModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
725
+ SkyDatePipeModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipeModule, declarations: [SkyDatePipe, SkyFuzzyDatePipe], imports: [i5.CommonModule, SkyDatetimeResourcesModule], exports: [SkyDatePipe, SkyFuzzyDatePipe] });
726
+ SkyDatePipeModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipeModule, providers: [SkyDatePipe, SkyFuzzyDatePipe], imports: [[i5.CommonModule, SkyDatetimeResourcesModule]] });
727
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatePipeModule, decorators: [{
620
728
  type: i0.NgModule,
621
729
  args: [{
622
- declarations: [
623
- SkyDatePipe,
624
- SkyFuzzyDatePipe
625
- ],
626
- providers: [
627
- SkyDatePipe,
628
- SkyFuzzyDatePipe
629
- ],
630
- imports: [
631
- i3$1.CommonModule,
632
- SkyDatetimeResourcesModule
633
- ],
634
- exports: [
635
- SkyDatePipe,
636
- SkyFuzzyDatePipe
637
- ]
730
+ declarations: [SkyDatePipe, SkyFuzzyDatePipe],
731
+ providers: [SkyDatePipe, SkyFuzzyDatePipe],
732
+ imports: [i5.CommonModule, SkyDatetimeResourcesModule],
733
+ exports: [SkyDatePipe, SkyFuzzyDatePipe],
638
734
  }]
639
735
  }] });
640
736
 
@@ -805,9 +901,9 @@
805
901
  };
806
902
  return SkyDatepickerAdapterService;
807
903
  }());
808
- SkyDatepickerAdapterService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerAdapterService, deps: [{ token: i0__namespace.Renderer2 }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
809
- SkyDatepickerAdapterService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerAdapterService });
810
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerAdapterService, decorators: [{
904
+ SkyDatepickerAdapterService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerAdapterService, deps: [{ token: i0__namespace.Renderer2 }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
905
+ SkyDatepickerAdapterService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerAdapterService });
906
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerAdapterService, decorators: [{
811
907
  type: i0.Injectable
812
908
  }], ctorParameters: function () { return [{ type: i0__namespace.Renderer2 }]; } });
813
909
 
@@ -825,7 +921,8 @@
825
921
  */
826
922
  SkyDateFormatter.getPreferredShortDateFormat = function () {
827
923
  /* istanbul ignore next */
828
- return moment__default["default"].localeData().longDateFormat('L') || SkyDateFormatter.defaultShortDateFormat;
924
+ return (moment__default["default"].localeData().longDateFormat('L') ||
925
+ SkyDateFormatter.defaultShortDateFormat);
829
926
  };
830
927
  SkyDateFormatter.prototype.format = function (date, format) {
831
928
  return moment__default["default"](date.getTime()).format(format);
@@ -887,8 +984,9 @@
887
984
  37: 'left',
888
985
  38: 'up',
889
986
  39: 'right',
890
- 40: 'down'
987
+ 40: 'down',
891
988
  };
989
+ this.ngUnsubscribe = new rxjs.Subject();
892
990
  }
893
991
  Object.defineProperty(SkyDatepickerCalendarInnerComponent.prototype, "selectedDate", {
894
992
  get: function () {
@@ -914,6 +1012,10 @@
914
1012
  SkyDatepickerCalendarInnerComponent.prototype.ngOnChanges = function (changes) {
915
1013
  this.refreshView();
916
1014
  };
1015
+ SkyDatepickerCalendarInnerComponent.prototype.ngOnDestroy = function () {
1016
+ this.ngUnsubscribe.next();
1017
+ this.ngUnsubscribe.complete();
1018
+ };
917
1019
  SkyDatepickerCalendarInnerComponent.prototype.setCompareHandler = function (handler, type) {
918
1020
  if (type === 'day') {
919
1021
  this.compareHandlerDay = handler;
@@ -1017,6 +1119,7 @@
1017
1119
  }
1018
1120
  };
1019
1121
  SkyDatepickerCalendarInnerComponent.prototype.createDateObject = function (date, format, isSecondary, id) {
1122
+ var customDateMatch = this.getCustomDate(date);
1020
1123
  var dateObject = {
1021
1124
  date: new Date(date.getFullYear(), date.getMonth(), date.getDate()),
1022
1125
  label: this.dateFilter(date, format),
@@ -1024,7 +1127,9 @@
1024
1127
  disabled: this.isDisabled(date),
1025
1128
  current: this.compare(date, new Date()) === 0,
1026
1129
  secondary: isSecondary,
1027
- uid: id
1130
+ uid: id,
1131
+ keyDate: customDateMatch ? customDateMatch.keyDate : undefined,
1132
+ keyDateText: customDateMatch ? customDateMatch.keyDateText : [],
1028
1133
  };
1029
1134
  return dateObject;
1030
1135
  };
@@ -1065,7 +1170,8 @@
1065
1170
  }
1066
1171
  }
1067
1172
  else {
1068
- this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];
1173
+ this.datepickerMode =
1174
+ this.modes[this.modes.indexOf(this.datepickerMode) - 1];
1069
1175
  this.calendarModeChange.emit(this.datepickerMode);
1070
1176
  }
1071
1177
  this.refreshView();
@@ -1089,8 +1195,8 @@
1089
1195
  /* istanbul ignore else */
1090
1196
  /* sanity check */
1091
1197
  if (expectedStep) {
1092
- var year = this.activeDate.getFullYear() + (direction * (expectedStep.years || 0));
1093
- var month = this.activeDate.getMonth() + (direction * (expectedStep.months || 0));
1198
+ var year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);
1199
+ var month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);
1094
1200
  this.activeDate = new Date(year, month, 1);
1095
1201
  this.refreshView();
1096
1202
  }
@@ -1107,28 +1213,45 @@
1107
1213
  /* sanity check */
1108
1214
  if (!(direction === 1 && this.datepickerMode === this.maxMode) &&
1109
1215
  !(this.datepickerMode === this.minMode && direction === -1)) {
1110
- this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];
1216
+ this.datepickerMode =
1217
+ this.modes[this.modes.indexOf(this.datepickerMode) + direction];
1111
1218
  this.calendarModeChange.emit(this.datepickerMode);
1112
1219
  this.refreshView();
1113
1220
  }
1114
1221
  };
1222
+ /**
1223
+ * Date is disabled if it meets any of these criteria:
1224
+ * 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.
1225
+ * 2. Date is marked as disabled in the customDates array.
1226
+ */
1115
1227
  SkyDatepickerCalendarInnerComponent.prototype.isDisabled = function (date) {
1116
- return ((this.minDate && this.compare(date, this.minDate) < 0)
1117
- || (this.maxDate && this.compare(date, this.maxDate) > 0));
1228
+ var customDate = this.getCustomDate(date);
1229
+ return ((this.minDate && this.compare(date, this.minDate) < 0) ||
1230
+ (this.maxDate && this.compare(date, this.maxDate) > 0) ||
1231
+ (customDate && customDate.disabled));
1232
+ };
1233
+ SkyDatepickerCalendarInnerComponent.prototype.getCustomDate = function (date) {
1234
+ if (this.customDates) {
1235
+ return this.customDates.find(function (customDate) {
1236
+ return customDate.date.getTime() === date.getTime();
1237
+ });
1238
+ }
1118
1239
  };
1119
1240
  return SkyDatepickerCalendarInnerComponent;
1120
1241
  }());
1121
- SkyDatepickerCalendarInnerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1122
- SkyDatepickerCalendarInnerComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0__namespace.ViewEncapsulation.None });
1123
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerCalendarInnerComponent, decorators: [{
1242
+ SkyDatepickerCalendarInnerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1243
+ SkyDatepickerCalendarInnerComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0__namespace.ViewEncapsulation.None });
1244
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerCalendarInnerComponent, decorators: [{
1124
1245
  type: i0.Component,
1125
1246
  args: [{
1126
1247
  selector: 'sky-datepicker-inner',
1127
- template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\">\n <ng-content></ng-content>\n</div>\n",
1248
+ template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n",
1128
1249
  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"],
1129
- encapsulation: i0.ViewEncapsulation.None
1250
+ encapsulation: i0.ViewEncapsulation.None,
1130
1251
  }]
1131
- }], propDecorators: { startingDay: [{
1252
+ }], propDecorators: { customDates: [{
1253
+ type: i0.Input
1254
+ }], startingDay: [{
1132
1255
  type: i0.Input
1133
1256
  }], minDate: [{
1134
1257
  type: i0.Input
@@ -1153,29 +1276,208 @@
1153
1276
  }
1154
1277
  return SkyDatepickerConfigService;
1155
1278
  }());
1156
- SkyDatepickerConfigService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerConfigService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1157
- SkyDatepickerConfigService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerConfigService, providedIn: 'root' });
1158
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerConfigService, decorators: [{
1279
+ SkyDatepickerConfigService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerConfigService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1280
+ SkyDatepickerConfigService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerConfigService, providedIn: 'root' });
1281
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerConfigService, decorators: [{
1159
1282
  type: i0.Injectable,
1160
1283
  args: [{
1161
- providedIn: 'root'
1284
+ providedIn: 'root',
1162
1285
  }]
1163
1286
  }] });
1164
1287
 
1288
+ /**
1289
+ * @internal
1290
+ */
1291
+ var SkyDatepickerService = /** @class */ (function () {
1292
+ function SkyDatepickerService() {
1293
+ /**
1294
+ * Specifies if a key date popover is currently displayed.
1295
+ * Useful for communicating across all daypicker siblings when a popover is displayed.
1296
+ */
1297
+ this.keyDatePopoverStream = new rxjs.Subject();
1298
+ }
1299
+ return SkyDatepickerService;
1300
+ }());
1301
+ SkyDatepickerService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1302
+ SkyDatepickerService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerService });
1303
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerService, decorators: [{
1304
+ type: i0.Injectable
1305
+ }] });
1306
+
1307
+ /**
1308
+ * @internal
1309
+ */
1310
+ var SkyDayPickerButtonComponent = /** @class */ (function () {
1311
+ function SkyDayPickerButtonComponent(datepicker) {
1312
+ this.datepicker = datepicker;
1313
+ }
1314
+ return SkyDayPickerButtonComponent;
1315
+ }());
1316
+ SkyDayPickerButtonComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDayPickerButtonComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1317
+ SkyDayPickerButtonComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: { date: "date" }, ngImport: i0__namespace, 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__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1318
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDayPickerButtonComponent, decorators: [{
1319
+ type: i0.Component,
1320
+ args: [{
1321
+ selector: 'sky-daypicker-button',
1322
+ 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",
1323
+ 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"],
1324
+ }]
1325
+ }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { date: [{
1326
+ type: i0.Input
1327
+ }] } });
1328
+
1329
+ /**
1330
+ * @internal
1331
+ */
1332
+ var SkyDayPickerCellComponent = /** @class */ (function () {
1333
+ function SkyDayPickerCellComponent(datepicker, datepickerService) {
1334
+ this.datepicker = datepicker;
1335
+ this.datepickerService = datepickerService;
1336
+ this.hasTooltip = false;
1337
+ this.popoverController = new rxjs.Subject();
1338
+ this.activeUid = '';
1339
+ this.cancelPopover = false;
1340
+ this.popoverOpen = false;
1341
+ this.ngUnsubscribe = new rxjs.Subject();
1342
+ }
1343
+ SkyDayPickerCellComponent.prototype.ngOnInit = function () {
1344
+ var _this = this;
1345
+ this.hasTooltip =
1346
+ this.date.keyDate &&
1347
+ this.date.keyDateText &&
1348
+ this.date.keyDateText.length > 0 &&
1349
+ this.date.keyDateText[0].length > 0;
1350
+ // show the tooltip if this is the active date and is not the
1351
+ // initial active date (activeDateHasChanged)
1352
+ if (this.datepicker.isActive(this.date) &&
1353
+ this.activeDateHasChanged &&
1354
+ this.hasTooltip) {
1355
+ this.activeUid = this.date.uid;
1356
+ this.showTooltip();
1357
+ }
1358
+ if (this.hasTooltip) {
1359
+ this.datepickerService.keyDatePopoverStream
1360
+ .pipe(operators.takeUntil(this.ngUnsubscribe))
1361
+ .subscribe(function (date) {
1362
+ if (date) {
1363
+ _this.activeUid = date.uid;
1364
+ }
1365
+ else {
1366
+ _this.activeUid = '';
1367
+ }
1368
+ // If this day has an open popover and they have moved off of the day close the popover.
1369
+ if (_this.date.uid !== _this.activeUid) {
1370
+ _this.hideTooltip();
1371
+ }
1372
+ });
1373
+ }
1374
+ };
1375
+ SkyDayPickerCellComponent.prototype.ngOnDestroy = function () {
1376
+ this.ngUnsubscribe.next();
1377
+ this.ngUnsubscribe.complete();
1378
+ };
1379
+ SkyDayPickerCellComponent.prototype.onDayMouseenter = function () {
1380
+ this.cancelPopover = false;
1381
+ if (this.hasTooltip) {
1382
+ this.showTooltip();
1383
+ this.datepickerService.keyDatePopoverStream.next(this.date);
1384
+ }
1385
+ };
1386
+ SkyDayPickerCellComponent.prototype.onDayMouseleave = function () {
1387
+ this.cancelPopover = true;
1388
+ if (this.hasTooltip) {
1389
+ this.hideTooltip();
1390
+ }
1391
+ this.datepickerService.keyDatePopoverStream.next(undefined);
1392
+ };
1393
+ SkyDayPickerCellComponent.prototype.onPopoverClosed = function () {
1394
+ this.popoverOpen = false;
1395
+ };
1396
+ SkyDayPickerCellComponent.prototype.onPopoverOpened = function () {
1397
+ this.popoverOpen = true;
1398
+ /* istanbul ignore else */
1399
+ if (this.cancelPopover) {
1400
+ // If the popover gets opened just as a mouseout event happens, close it.
1401
+ this.hideTooltip();
1402
+ this.cancelPopover = false;
1403
+ }
1404
+ };
1405
+ SkyDayPickerCellComponent.prototype.getKeyDateLabel = function () {
1406
+ if (this.hasTooltip) {
1407
+ return this.date.keyDateText.join(', ');
1408
+ }
1409
+ else {
1410
+ return '';
1411
+ }
1412
+ };
1413
+ SkyDayPickerCellComponent.prototype.hideTooltip = function () {
1414
+ /* istanbul ignore else */
1415
+ if (this.popoverOpen) {
1416
+ this.popoverController.next({ type: i3$1.SkyPopoverMessageType.Close });
1417
+ }
1418
+ };
1419
+ SkyDayPickerCellComponent.prototype.showTooltip = function () {
1420
+ var _this = this;
1421
+ /* istanbul ignore else */
1422
+ if (this.hasTooltip && !this.popoverOpen) {
1423
+ /**
1424
+ * Delay 1/2 second before opening the popover as long as mouse hasn't moved off the date.
1425
+ */
1426
+ setTimeout(function () {
1427
+ if (!_this.cancelPopover && _this.activeUid === _this.date.uid) {
1428
+ _this.popoverController.next({ type: i3$1.SkyPopoverMessageType.Open });
1429
+ }
1430
+ }, 500);
1431
+ }
1432
+ };
1433
+ return SkyDayPickerCellComponent;
1434
+ }());
1435
+ SkyDayPickerCellComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDayPickerCellComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }, { token: SkyDatepickerService }], target: i0__namespace.ɵɵFactoryTarget.Component });
1436
+ SkyDayPickerCellComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: { activeDateHasChanged: "activeDateHasChanged", date: "date" }, ngImport: i0__namespace, 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__namespace$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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { type: i5__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1437
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDayPickerCellComponent, decorators: [{
1438
+ type: i0.Component,
1439
+ args: [{
1440
+ selector: 'sky-daypicker-cell',
1441
+ 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",
1442
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
1443
+ }]
1444
+ }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }, { type: SkyDatepickerService }]; }, propDecorators: { activeDateHasChanged: [{
1445
+ type: i0.Input
1446
+ }], date: [{
1447
+ type: i0.Input
1448
+ }] } });
1449
+
1165
1450
  /**
1166
1451
  * @internal
1167
1452
  */
1168
1453
  var SkyDayPickerComponent = /** @class */ (function () {
1169
1454
  function SkyDayPickerComponent(datepicker) {
1455
+ this.calendarDateRangeChange = new i0.EventEmitter();
1456
+ this.isWaiting = false;
1457
+ this.activeDateHasChanged = false;
1170
1458
  this.labels = [];
1171
1459
  this.rows = [];
1172
1460
  this.weekNumbers = [];
1173
- this.daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
1461
+ this.daysInMonth = [
1462
+ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
1463
+ ];
1464
+ this.ngUnsubscribe = new rxjs.Subject();
1174
1465
  this.datepicker = datepicker;
1175
1466
  }
1467
+ Object.defineProperty(SkyDayPickerComponent.prototype, "customDates", {
1468
+ set: function (value) {
1469
+ /* istanbul ignore else */
1470
+ if (value) {
1471
+ this.applyCustomDates(value, this.rows);
1472
+ }
1473
+ },
1474
+ enumerable: false,
1475
+ configurable: true
1476
+ });
1176
1477
  SkyDayPickerComponent.prototype.ngOnInit = function () {
1177
1478
  var _this = this;
1178
1479
  this.datepicker.stepDay = { months: 1 };
1480
+ this.initialDate = this.datepicker.activeDate.getDate();
1179
1481
  this.datepicker.setRefreshViewHandler(function () {
1180
1482
  _this.refreshDayView();
1181
1483
  }, 'day');
@@ -1185,6 +1487,10 @@
1185
1487
  }, 'day');
1186
1488
  this.datepicker.refreshView();
1187
1489
  };
1490
+ SkyDayPickerComponent.prototype.ngOnDestroy = function () {
1491
+ this.ngUnsubscribe.next();
1492
+ this.ngUnsubscribe.complete();
1493
+ };
1188
1494
  SkyDayPickerComponent.prototype.getDates = function (startDate, n) {
1189
1495
  var dates = new Array(n);
1190
1496
  var current = new Date(startDate.getTime());
@@ -1208,10 +1514,11 @@
1208
1514
  var month = this.datepicker.activeDate.getMonth();
1209
1515
  var firstDayOfMonth = new Date(year, month, 1);
1210
1516
  var difference = this.datepicker.startingDay - firstDayOfMonth.getDay();
1211
- var numDisplayedFromPreviousMonth = (difference > 0)
1212
- ? 7 - difference
1213
- : -difference;
1517
+ var numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;
1214
1518
  var firstDate = new Date(firstDayOfMonth.getTime());
1519
+ if (this.datepicker.activeDate.getDate() !== this.initialDate) {
1520
+ this.activeDateHasChanged = true;
1521
+ }
1215
1522
  /* istanbul ignore else */
1216
1523
  /* sanity check */
1217
1524
  if (numDisplayedFromPreviousMonth > 0) {
@@ -1227,13 +1534,19 @@
1227
1534
  this.labels = [];
1228
1535
  for (var j = 0; j < 7; j++) {
1229
1536
  this.labels[j] = {};
1230
- this.labels[j].abbr =
1231
- this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
1537
+ this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
1232
1538
  this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
1233
1539
  }
1234
- this.title =
1235
- this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
1540
+ this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
1541
+ var oldDateRange = this.getDateRange(this.rows);
1236
1542
  this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
1543
+ var newDateRange = this.getDateRange(this.rows);
1544
+ if (!this.dateRangeRowsAreEqual(oldDateRange, newDateRange)) {
1545
+ this.calendarDateRangeChange.next({
1546
+ startDate: newDateRange.startDate,
1547
+ endDate: newDateRange.endDate,
1548
+ });
1549
+ }
1237
1550
  };
1238
1551
  SkyDayPickerComponent.prototype.keydownDays = function (key, event) {
1239
1552
  var date = this.datepicker.activeDate.getDate();
@@ -1254,8 +1567,7 @@
1254
1567
  else if (key === 'pageup' || key === 'pagedown') {
1255
1568
  var month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
1256
1569
  this.datepicker.activeDate.setMonth(month, 1);
1257
- date =
1258
- Math.min(this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
1570
+ date = Math.min(this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
1259
1571
  }
1260
1572
  else if (key === 'home') {
1261
1573
  date = 1;
@@ -1266,21 +1578,87 @@
1266
1578
  this.datepicker.activeDate.setDate(date);
1267
1579
  };
1268
1580
  SkyDayPickerComponent.prototype.getDaysInMonth = function (year, month) {
1269
- return month === 1 && year % 4 === 0 &&
1270
- (year % 400 === 0 || year % 100 !== 0) ? 29 : this.daysInMonth[month];
1581
+ return month === 1 &&
1582
+ year % 4 === 0 &&
1583
+ (year % 400 === 0 || year % 100 !== 0)
1584
+ ? 29
1585
+ : this.daysInMonth[month];
1586
+ };
1587
+ /**
1588
+ * Applies custom date properties to the existing dates displayed in the calendar.
1589
+ */
1590
+ SkyDayPickerComponent.prototype.applyCustomDates = function (customDates, dateRows) {
1591
+ var date;
1592
+ var newDate;
1593
+ var dateIndex;
1594
+ /* istanbul ignore else */
1595
+ if (customDates && dateRows) {
1596
+ customDates.forEach(function (customDate) {
1597
+ dateIndex = -1;
1598
+ dateRows.forEach(function (row) {
1599
+ if (dateIndex === -1) {
1600
+ dateIndex = row.findIndex(function (d) {
1601
+ return d.date.getTime() === customDate.date.getTime();
1602
+ });
1603
+ if (dateIndex > -1) {
1604
+ date = row[dateIndex];
1605
+ // Replace the date with a new instance so the display gets updated.
1606
+ newDate = {
1607
+ current: date.current,
1608
+ date: date.date,
1609
+ disabled: !!date.disabled || !!customDate.disabled,
1610
+ keyDate: !!customDate.keyDate || !!date.keyDate,
1611
+ keyDateText: customDate.keyDateText || date.keyDateText,
1612
+ label: date.label,
1613
+ secondary: date.secondary,
1614
+ selected: date.selected,
1615
+ uid: date.uid,
1616
+ };
1617
+ row[dateIndex] = newDate;
1618
+ }
1619
+ }
1620
+ });
1621
+ });
1622
+ }
1623
+ };
1624
+ SkyDayPickerComponent.prototype.dateRangeRowsAreEqual = function (rangeA, rangeB) {
1625
+ /* istanbul ignore if */
1626
+ if (!rangeA && !rangeB) {
1627
+ return true;
1628
+ }
1629
+ else if ((rangeA && !rangeB) || (!rangeA && rangeB)) {
1630
+ return false;
1631
+ }
1632
+ return (this.compareDays(rangeA.startDate, rangeB.startDate) === 0 &&
1633
+ this.compareDays(rangeA.endDate, rangeB.endDate) === 0);
1634
+ };
1635
+ SkyDayPickerComponent.prototype.getDateRange = function (rows) {
1636
+ /* istanbul ignore else */
1637
+ if (rows && rows.length > 0) {
1638
+ return {
1639
+ startDate: rows[0][0].date,
1640
+ endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
1641
+ };
1642
+ }
1271
1643
  };
1272
1644
  return SkyDayPickerComponent;
1273
1645
  }());
1274
- SkyDayPickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDayPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1275
- SkyDayPickerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDayPickerComponent, selector: "sky-daypicker", ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1276
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDayPickerComponent, decorators: [{
1646
+ SkyDayPickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDayPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1647
+ SkyDayPickerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i2__namespace.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }], directives: [{ type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1648
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDayPickerComponent, decorators: [{
1277
1649
  type: i0.Component,
1278
1650
  args: [{
1279
1651
  selector: 'sky-daypicker',
1280
- 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",
1281
- styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"]
1652
+ 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",
1653
+ styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"],
1282
1654
  }]
1283
- }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; } });
1655
+ }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { customDates: [{
1656
+ type: i0.Input
1657
+ }], calendarDateRangeChange: [{
1658
+ type: i0.Output
1659
+ }], isWaiting: [{
1660
+ type: i0.Input
1661
+ }] } });
1284
1662
 
1285
1663
  /**
1286
1664
  * @internal
@@ -1293,7 +1671,7 @@
1293
1671
  SkyMonthPickerComponent.prototype.ngOnInit = function () {
1294
1672
  var _this = this;
1295
1673
  this.datepicker.stepMonth = {
1296
- years: 1
1674
+ years: 1,
1297
1675
  };
1298
1676
  this.datepicker.setRefreshViewHandler(function () {
1299
1677
  _this.refreshMonthView();
@@ -1316,11 +1694,9 @@
1316
1694
  for (var i = 0; i < 12; i++) {
1317
1695
  date = new Date(year, i, 1);
1318
1696
  date = this.datepicker.fixTimeZone(date);
1319
- months[i] =
1320
- this.datepicker.createDateObject(date, this.datepicker.formatMonth, false, this.datepicker.datepickerId + '-' + i);
1697
+ months[i] = this.datepicker.createDateObject(date, this.datepicker.formatMonth, false, this.datepicker.datepickerId + '-' + i);
1321
1698
  }
1322
- this.title =
1323
- this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatMonthTitle);
1699
+ this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatMonthTitle);
1324
1700
  this.rows = this.datepicker.createCalendarRows(months, this.datepicker.monthColLimit);
1325
1701
  };
1326
1702
  SkyMonthPickerComponent.prototype.keydownMonths = function (key, event) {
@@ -1353,14 +1729,14 @@
1353
1729
  };
1354
1730
  return SkyMonthPickerComponent;
1355
1731
  }());
1356
- SkyMonthPickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyMonthPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1357
- SkyMonthPickerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyMonthPickerComponent, selector: "sky-monthpicker", ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1358
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyMonthPickerComponent, decorators: [{
1732
+ SkyMonthPickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyMonthPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1733
+ SkyMonthPickerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyMonthPickerComponent, selector: "sky-monthpicker", ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1734
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyMonthPickerComponent, decorators: [{
1359
1735
  type: i0.Component,
1360
1736
  args: [{
1361
1737
  selector: 'sky-monthpicker',
1362
- 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",
1363
- styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"]
1738
+ 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",
1739
+ styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"],
1364
1740
  }]
1365
1741
  }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; } });
1366
1742
 
@@ -1385,7 +1761,9 @@
1385
1761
  this.datepicker.refreshView();
1386
1762
  };
1387
1763
  SkyYearPickerComponent.prototype.getStartingYear = function (year) {
1388
- return Math.floor((year - 1) / this.datepicker.yearRange) * this.datepicker.yearRange + 1;
1764
+ return (Math.floor((year - 1) / this.datepicker.yearRange) *
1765
+ this.datepicker.yearRange +
1766
+ 1);
1389
1767
  };
1390
1768
  SkyYearPickerComponent.prototype.compareYears = function (date1, date2) {
1391
1769
  return date1.getFullYear() - date2.getFullYear();
@@ -1397,11 +1775,12 @@
1397
1775
  for (var i = 0; i < this.datepicker.yearRange; i++) {
1398
1776
  date = new Date(this.datepicker.activeDate);
1399
1777
  date.setFullYear(start + i, 0, 1);
1400
- years[i] =
1401
- this.datepicker.createDateObject(date, this.datepicker.formatYear, false, this.datepicker.datepickerId + '-' + i);
1778
+ years[i] = this.datepicker.createDateObject(date, this.datepicker.formatYear, false, this.datepicker.datepickerId + '-' + i);
1402
1779
  }
1403
- this.title = [years[0].label,
1404
- years[this.datepicker.yearRange - 1].label].join(' - ');
1780
+ this.title = [
1781
+ years[0].label,
1782
+ years[this.datepicker.yearRange - 1].label,
1783
+ ].join(' - ');
1405
1784
  this.rows = this.datepicker.createCalendarRows(years, this.datepicker.yearColLimit);
1406
1785
  };
1407
1786
  SkyYearPickerComponent.prototype.keydownYears = function (key, event) {
@@ -1427,21 +1806,23 @@
1427
1806
  date = this.getStartingYear(this.datepicker.activeDate.getFullYear());
1428
1807
  }
1429
1808
  else if (key === 'end') {
1430
- date
1431
- = this.getStartingYear(this.datepicker.activeDate.getFullYear()) + this.datepicker.yearRange - 1;
1809
+ date =
1810
+ this.getStartingYear(this.datepicker.activeDate.getFullYear()) +
1811
+ this.datepicker.yearRange -
1812
+ 1;
1432
1813
  }
1433
1814
  this.datepicker.activeDate.setFullYear(date);
1434
1815
  };
1435
1816
  return SkyYearPickerComponent;
1436
1817
  }());
1437
- SkyYearPickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyYearPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1438
- SkyYearPickerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyYearPickerComponent, selector: "sky-yearpicker", ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1439
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyYearPickerComponent, decorators: [{
1818
+ SkyYearPickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyYearPickerComponent, deps: [{ token: SkyDatepickerCalendarInnerComponent }], target: i0__namespace.ɵɵFactoryTarget.Component });
1819
+ SkyYearPickerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: SkyYearPickerComponent, selector: "sky-yearpicker", ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1820
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyYearPickerComponent, decorators: [{
1440
1821
  type: i0.Component,
1441
1822
  args: [{
1442
1823
  selector: 'sky-yearpicker',
1443
- 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",
1444
- styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"]
1824
+ 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",
1825
+ styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"],
1445
1826
  }]
1446
1827
  }], ctorParameters: function () { return [{ type: SkyDatepickerCalendarInnerComponent }]; } });
1447
1828
 
@@ -1453,8 +1834,9 @@
1453
1834
  this.adapter = adapter;
1454
1835
  this.config = config;
1455
1836
  this.elementRef = elementRef;
1456
- this.selectedDateChange = new i0.EventEmitter(undefined);
1837
+ this.calendarDateRangeChange = new i0.EventEmitter();
1457
1838
  this.calendarModeChange = new i0.EventEmitter();
1839
+ this.selectedDateChange = new i0.EventEmitter(undefined);
1458
1840
  this._now = new Date();
1459
1841
  this.formatter = new SkyDateFormatter();
1460
1842
  this.configureOptions();
@@ -1487,6 +1869,9 @@
1487
1869
  SkyDatepickerCalendarComponent.prototype.configureOptions = function () {
1488
1870
  Object.assign(this, this.config);
1489
1871
  };
1872
+ SkyDatepickerCalendarComponent.prototype.onCalendarDateRangeChange = function (event) {
1873
+ this.calendarDateRangeChange.next(event);
1874
+ };
1490
1875
  SkyDatepickerCalendarComponent.prototype.onCalendarModeChange = function (event) {
1491
1876
  this.calendarModeChange.emit(event);
1492
1877
  };
@@ -1494,10 +1879,10 @@
1494
1879
  this.selectedDateChange.emit(event);
1495
1880
  };
1496
1881
  SkyDatepickerCalendarComponent.prototype.writeValue = function (value) {
1497
- if (value !== undefined
1498
- && this.formatter.dateIsValid(value)
1499
- && this.selectedDate !== undefined
1500
- && this._datepicker.compareHandlerDay(value, this.selectedDate) === 0) {
1882
+ if (value !== undefined &&
1883
+ this.formatter.dateIsValid(value) &&
1884
+ this.selectedDate !== undefined &&
1885
+ this._datepicker.compareHandlerDay(value, this.selectedDate) === 0) {
1501
1886
  return;
1502
1887
  }
1503
1888
  if (this.formatter.dateIsValid(value)) {
@@ -1511,17 +1896,21 @@
1511
1896
  };
1512
1897
  return SkyDatepickerCalendarComponent;
1513
1898
  }());
1514
- SkyDatepickerCalendarComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerCalendarComponent, deps: [{ token: SkyDatepickerAdapterService }, { token: SkyDatepickerConfigService }, { token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1515
- SkyDatepickerCalendarComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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" }] });
1516
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerCalendarComponent, decorators: [{
1899
+ SkyDatepickerCalendarComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerCalendarComponent, deps: [{ token: SkyDatepickerAdapterService }, { token: SkyDatepickerConfigService }, { token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1900
+ SkyDatepickerCalendarComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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" }] });
1901
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerCalendarComponent, decorators: [{
1517
1902
  type: i0.Component,
1518
1903
  args: [{
1519
1904
  selector: 'sky-datepicker-calendar',
1520
- 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",
1905
+ 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",
1521
1906
  styles: [".sky-datepicker-calendar{display:block}\n"],
1522
- providers: [SkyDatepickerAdapterService]
1907
+ providers: [SkyDatepickerAdapterService],
1523
1908
  }]
1524
- }], ctorParameters: function () { return [{ type: SkyDatepickerAdapterService }, { type: SkyDatepickerConfigService }, { type: i0__namespace.ElementRef }]; }, propDecorators: { minDate: [{
1909
+ }], ctorParameters: function () { return [{ type: SkyDatepickerAdapterService }, { type: SkyDatepickerConfigService }, { type: i0__namespace.ElementRef }]; }, propDecorators: { customDates: [{
1910
+ type: i0.Input
1911
+ }], isDaypickerWaiting: [{
1912
+ type: i0.Input
1913
+ }], minDate: [{
1525
1914
  type: i0.Input
1526
1915
  }], maxDate: [{
1527
1916
  type: i0.Input
@@ -1529,15 +1918,17 @@
1529
1918
  type: i0.Input
1530
1919
  }], startingDay: [{
1531
1920
  type: i0.Input
1532
- }], selectedDateChange: [{
1921
+ }], calendarDateRangeChange: [{
1533
1922
  type: i0.Output
1534
1923
  }], calendarModeChange: [{
1535
1924
  type: i0.Output
1925
+ }], selectedDateChange: [{
1926
+ type: i0.Output
1536
1927
  }], _datepicker: [{
1537
1928
  type: i0.ViewChild,
1538
1929
  args: [SkyDatepickerCalendarInnerComponent, {
1539
1930
  read: SkyDatepickerCalendarInnerComponent,
1540
- static: true
1931
+ static: true,
1541
1932
  }]
1542
1933
  }] } });
1543
1934
 
@@ -1558,7 +1949,14 @@
1558
1949
  * Adds a class to the datepicker.
1559
1950
  */
1560
1951
  this.pickerClass = '';
1952
+ /**
1953
+ * Fires when the range of displayed dates in the calendar changes. Provides the
1954
+ * current range of displayed dates and a mutable `customDate` property consumers can use
1955
+ * to modify individual dates on the calendar.
1956
+ */
1957
+ this.calendarDateRangeChange = new i0.EventEmitter();
1561
1958
  this.dateChange = new i0.EventEmitter();
1959
+ this.isDaypickerWaiting = false;
1562
1960
  this.isOpen = false;
1563
1961
  this.isVisible = false;
1564
1962
  this.ngUnsubscribe = new rxjs.Subject();
@@ -1666,7 +2064,7 @@
1666
2064
  if (this.inputBoxHostService) {
1667
2065
  this.inputBoxHostService.populate({
1668
2066
  inputTemplate: this.inputTemplateRef,
1669
- buttonsTemplate: this.triggerButtonTemplateRef
2067
+ buttonsTemplate: this.triggerButtonTemplateRef,
1670
2068
  });
1671
2069
  }
1672
2070
  };
@@ -1697,6 +2095,43 @@
1697
2095
  this.openPicker();
1698
2096
  }
1699
2097
  };
2098
+ SkyDatepickerComponent.prototype.onCalendarDateRangeChange = function (event) {
2099
+ var _this = this;
2100
+ /* istanbul ignore else */
2101
+ if (event) {
2102
+ this.cancelCustomDatesSubscription();
2103
+ var args = {
2104
+ startDate: event.startDate,
2105
+ endDate: event.endDate,
2106
+ customDates: undefined,
2107
+ };
2108
+ this.calendarDateRangeChange.emit(args);
2109
+ // If consumer has added an observable to the args, watch for incoming custom dates.
2110
+ /* istanbul ignore else */
2111
+ if (args.customDates) {
2112
+ this.isDaypickerWaiting = true;
2113
+ // Avoid an ExpressionChangedAfterItHasBeenCheckedError.
2114
+ this.changeDetector.detectChanges();
2115
+ this.customDatesSubscription = args.customDates
2116
+ .pipe(operators.debounceTime(250))
2117
+ .subscribe(function (result) {
2118
+ _this.customDates = result;
2119
+ _this.isDaypickerWaiting = false;
2120
+ // Trigger change detection in child components to show changes in the calendar.
2121
+ _this.changeDetector.markForCheck();
2122
+ });
2123
+ }
2124
+ else {
2125
+ // If consumer returns an undefined value after custom dates have
2126
+ // already ben established, remove custom dates.
2127
+ if (this.customDates) {
2128
+ this.customDates = undefined;
2129
+ // Avoid an ExpressionChangedAfterItHasBeenCheckedError.
2130
+ this.changeDetector.detectChanges();
2131
+ }
2132
+ }
2133
+ }
2134
+ };
1700
2135
  SkyDatepickerComponent.prototype.closePicker = function () {
1701
2136
  this.destroyAffixer();
1702
2137
  this.destroyOverlay();
@@ -1721,7 +2156,7 @@
1721
2156
  affixer.placementChange
1722
2157
  .pipe(operators.takeUntil(this.calendarUnsubscribe))
1723
2158
  .subscribe(function (change) {
1724
- _this.isVisible = (change.placement !== null);
2159
+ _this.isVisible = change.placement !== null;
1725
2160
  _this.changeDetector.markForCheck();
1726
2161
  });
1727
2162
  affixer.affixTo(this.triggerButtonRef.nativeElement, {
@@ -1729,7 +2164,7 @@
1729
2164
  enableAutoFit: true,
1730
2165
  horizontalAlignment: 'right',
1731
2166
  isSticky: true,
1732
- placement: 'below'
2167
+ placement: 'below',
1733
2168
  });
1734
2169
  this.affixer = affixer;
1735
2170
  };
@@ -1745,7 +2180,7 @@
1745
2180
  var overlay = this.overlayService.create({
1746
2181
  wrapperClass: this.pickerClass,
1747
2182
  enableClose: false,
1748
- enablePointerEvents: false
2183
+ enablePointerEvents: false,
1749
2184
  });
1750
2185
  overlay.backdropClick
1751
2186
  .pipe(operators.takeUntil(this.calendarUnsubscribe))
@@ -1788,17 +2223,23 @@
1788
2223
  }
1789
2224
  (_a = this.overlayKeydownListner) === null || _a === void 0 ? void 0 : _a.unsubscribe();
1790
2225
  };
2226
+ SkyDatepickerComponent.prototype.cancelCustomDatesSubscription = function () {
2227
+ if (this.customDatesSubscription) {
2228
+ this.customDatesSubscription.unsubscribe();
2229
+ this.customDatesSubscription = undefined;
2230
+ }
2231
+ };
1791
2232
  return SkyDatepickerComponent;
1792
2233
  }());
1793
- SkyDatepickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerComponent, deps: [{ token: i1__namespace.SkyAffixService }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.SkyCoreAdapterService }, { token: i1__namespace.SkyOverlayService }, { token: i2__namespace$1.SkyInputBoxHostService, optional: true }, { token: i3__namespace$2.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
1794
- SkyDatepickerComponent.ɵcmp = i0__namespace.ɵɵ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: i0.ElementRef }, { propertyName: "calendarTemplateRef", first: true, predicate: ["calendarTemplateRef"], descendants: true, read: i0.TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: i0.ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }], ngImport: i0__namespace, 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__namespace.λ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__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3__namespace$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }], pipes: { "skyLibResources": i3__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1795
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerComponent, decorators: [{
2234
+ SkyDatepickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerComponent, deps: [{ token: i1__namespace.SkyAffixService }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.SkyCoreAdapterService }, { token: i1__namespace.SkyOverlayService }, { token: i2__namespace$1.SkyInputBoxHostService, optional: true }, { token: i3__namespace$2.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
2235
+ SkyDatepickerComponent.ɵcmp = i0__namespace.ɵɵ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: i0.ElementRef }, { propertyName: "calendarTemplateRef", first: true, predicate: ["calendarTemplateRef"], descendants: true, read: i0.TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: i0.ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }], ngImport: i0__namespace, 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__namespace.λ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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3__namespace$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }], pipes: { "skyLibResources": i3__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
2236
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerComponent, decorators: [{
1796
2237
  type: i0.Component,
1797
2238
  args: [{
1798
2239
  selector: 'sky-datepicker',
1799
- 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",
2240
+ 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",
1800
2241
  styles: [".sky-datepicker-calendar-container{position:fixed;border-radius:5px}.sky-datepicker-hidden{visibility:hidden}\n"],
1801
- changeDetection: i0.ChangeDetectionStrategy.OnPush
2242
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
1802
2243
  }]
1803
2244
  }], ctorParameters: function () {
1804
2245
  return [{ type: i1__namespace.SkyAffixService }, { type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace.SkyCoreAdapterService }, { type: i1__namespace.SkyOverlayService }, { type: i2__namespace$1.SkyInputBoxHostService, decorators: [{
@@ -1808,35 +2249,37 @@
1808
2249
  }] }];
1809
2250
  }, propDecorators: { pickerClass: [{
1810
2251
  type: i0.Input
2252
+ }], calendarDateRangeChange: [{
2253
+ type: i0.Output
1811
2254
  }], calendar: [{
1812
2255
  type: i0.ViewChild,
1813
2256
  args: [SkyDatepickerCalendarComponent]
1814
2257
  }], calendarRef: [{
1815
2258
  type: i0.ViewChild,
1816
2259
  args: ['calendarRef', {
1817
- read: i0.ElementRef
2260
+ read: i0.ElementRef,
1818
2261
  }]
1819
2262
  }], calendarTemplateRef: [{
1820
2263
  type: i0.ViewChild,
1821
2264
  args: ['calendarTemplateRef', {
1822
- read: i0.TemplateRef
2265
+ read: i0.TemplateRef,
1823
2266
  }]
1824
2267
  }], triggerButtonRef: [{
1825
2268
  type: i0.ViewChild,
1826
2269
  args: ['triggerButtonRef', {
1827
- read: i0.ElementRef
2270
+ read: i0.ElementRef,
1828
2271
  }]
1829
2272
  }], inputTemplateRef: [{
1830
2273
  type: i0.ViewChild,
1831
2274
  args: ['inputTemplateRef', {
1832
2275
  read: i0.TemplateRef,
1833
- static: true
2276
+ static: true,
1834
2277
  }]
1835
2278
  }], triggerButtonTemplateRef: [{
1836
2279
  type: i0.ViewChild,
1837
2280
  args: ['triggerButtonTemplateRef', {
1838
2281
  read: i0.TemplateRef,
1839
- static: true
2282
+ static: true,
1840
2283
  }]
1841
2284
  }] } });
1842
2285
 
@@ -1844,12 +2287,12 @@
1844
2287
  var SKY_DATEPICKER_VALUE_ACCESSOR = {
1845
2288
  provide: i2$2.NG_VALUE_ACCESSOR,
1846
2289
  useExisting: i0.forwardRef(function () { return SkyDatepickerInputDirective; }),
1847
- multi: true
2290
+ multi: true,
1848
2291
  };
1849
2292
  var SKY_DATEPICKER_VALIDATOR = {
1850
2293
  provide: i2$2.NG_VALIDATORS,
1851
2294
  useExisting: i0.forwardRef(function () { return SkyDatepickerInputDirective; }),
1852
- multi: true
2295
+ multi: true,
1853
2296
  };
1854
2297
  // tslint:enable
1855
2298
  var SkyDatepickerInputDirective = /** @class */ (function () {
@@ -1877,19 +2320,21 @@
1877
2320
  this.onValidatorChange = function () { };
1878
2321
  this.initialPlaceholder = this.adapter.getPlaceholder(this.elementRef);
1879
2322
  this.updatePlaceholder();
1880
- this.localeProvider.getLocaleInfo()
2323
+ this.localeProvider
2324
+ .getLocaleInfo()
1881
2325
  .pipe(operators.takeUntil(this.ngUnsubscribe))
1882
2326
  .subscribe(function (localeInfo) {
1883
2327
  SkyDateFormatter.setLocale(localeInfo.locale);
1884
- _this.preferredShortDateFormat = SkyDateFormatter.getPreferredShortDateFormat();
2328
+ _this.preferredShortDateFormat =
2329
+ SkyDateFormatter.getPreferredShortDateFormat();
1885
2330
  _this.applyDateFormat();
1886
2331
  });
1887
2332
  }
1888
2333
  Object.defineProperty(SkyDatepickerInputDirective.prototype, "dateFormat", {
1889
2334
  get: function () {
1890
- return this._dateFormat ||
2335
+ return (this._dateFormat ||
1891
2336
  this.configService.dateFormat ||
1892
- this.preferredShortDateFormat;
2337
+ this.preferredShortDateFormat);
1893
2338
  },
1894
2339
  /**
1895
2340
  * Specifies the date format for the input. Place this attribute on the `input` element
@@ -2026,9 +2471,9 @@
2026
2471
  },
2027
2472
  set: function (value) {
2028
2473
  var dateValue = this.getDateValue(value);
2029
- var areDatesEqual = (this._value instanceof Date &&
2474
+ var areDatesEqual = this._value instanceof Date &&
2030
2475
  dateValue &&
2031
- dateValue.getTime() === this._value.getTime());
2476
+ dateValue.getTime() === this._value.getTime();
2032
2477
  var isValidDateString = this.isDateStringValid(value);
2033
2478
  // If the string value supplied is malformed, do not set the value to its Date equivalent.
2034
2479
  // (JavaScript's Date parser will convert poorly formatted dates to Date objects, such as "abc 123", which isn't ideal.)
@@ -2037,7 +2482,7 @@
2037
2482
  this.notifyUpdatedValue();
2038
2483
  }
2039
2484
  else if (dateValue !== this._value || !areDatesEqual) {
2040
- this._value = (dateValue || value);
2485
+ this._value = dateValue || value;
2041
2486
  this.notifyUpdatedValue();
2042
2487
  }
2043
2488
  if (dateValue && isValidDateString) {
@@ -2061,7 +2506,8 @@
2061
2506
  this.renderer.addClass(element, 'sky-form-control');
2062
2507
  var hasAriaLabel = element.getAttribute('aria-label');
2063
2508
  if (!hasAriaLabel) {
2064
- this.resourcesService.getString('skyux_date_field_default_label')
2509
+ this.resourcesService
2510
+ .getString('skyux_date_field_default_label')
2065
2511
  .pipe(operators.takeUntil(this.ngUnsubscribe))
2066
2512
  .subscribe(function (value) {
2067
2513
  _this.renderer.setAttribute(element, 'aria-label', value);
@@ -2090,7 +2536,7 @@
2090
2536
  if (this.control && this.control.parent) {
2091
2537
  setTimeout(function () {
2092
2538
  _this.control.setValue(_this.value, {
2093
- emitEvent: false
2539
+ emitEvent: false,
2094
2540
  });
2095
2541
  _this.changeDetector.markForCheck();
2096
2542
  });
@@ -2116,8 +2562,8 @@
2116
2562
  this.onChange(value);
2117
2563
  this.control.setErrors({
2118
2564
  skyDate: {
2119
- invalid: true
2120
- }
2565
+ invalid: true,
2566
+ },
2121
2567
  });
2122
2568
  };
2123
2569
  SkyDatepickerInputDirective.prototype.onInputBlur = function () {
@@ -2141,35 +2587,31 @@
2141
2587
  return;
2142
2588
  }
2143
2589
  var dateValue = this.getDateValue(value);
2144
- var isDateValid = (dateValue && this.dateFormatter.dateIsValid(dateValue));
2590
+ var isDateValid = dateValue && this.dateFormatter.dateIsValid(dateValue);
2145
2591
  if (!isDateValid || !this.isDateStringValid(value)) {
2146
2592
  // Mark the invalid control as touched so that the input's invalid CSS styles appear.
2147
2593
  // (This is only required when the invalid value is set by the FormControl constructor.)
2148
2594
  this.control.markAsTouched();
2149
2595
  return {
2150
- 'skyDate': {
2151
- invalid: value
2152
- }
2596
+ skyDate: {
2597
+ invalid: value,
2598
+ },
2153
2599
  };
2154
2600
  }
2155
2601
  var minDate = this.minDate;
2156
- if (minDate &&
2157
- this.dateFormatter.dateIsValid(minDate) &&
2158
- value < minDate) {
2602
+ if (minDate && this.dateFormatter.dateIsValid(minDate) && value < minDate) {
2159
2603
  return {
2160
- 'skyDate': {
2161
- minDate: minDate
2162
- }
2604
+ skyDate: {
2605
+ minDate: minDate,
2606
+ },
2163
2607
  };
2164
2608
  }
2165
2609
  var maxDate = this.maxDate;
2166
- if (maxDate &&
2167
- this.dateFormatter.dateIsValid(maxDate) &&
2168
- value > maxDate) {
2610
+ if (maxDate && this.dateFormatter.dateIsValid(maxDate) && value > maxDate) {
2169
2611
  return {
2170
- 'skyDate': {
2171
- maxDate: maxDate
2172
- }
2612
+ skyDate: {
2613
+ maxDate: maxDate,
2614
+ },
2173
2615
  };
2174
2616
  }
2175
2617
  };
@@ -2257,21 +2699,21 @@
2257
2699
  };
2258
2700
  return SkyDatepickerInputDirective;
2259
2701
  }());
2260
- SkyDatepickerInputDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerInputDirective, deps: [{ token: SkyDatepickerAdapterService }, { token: i0__namespace.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0__namespace.ElementRef }, { token: i3__namespace.SkyAppLocaleProvider }, { token: i0__namespace.Renderer2 }, { token: i3__namespace.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
2261
- SkyDatepickerInputDirective.ɵdir = i0__namespace.ɵɵ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: [
2702
+ SkyDatepickerInputDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerInputDirective, deps: [{ token: SkyDatepickerAdapterService }, { token: i0__namespace.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0__namespace.ElementRef }, { token: i3__namespace.SkyAppLocaleProvider }, { token: i0__namespace.Renderer2 }, { token: i3__namespace.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
2703
+ SkyDatepickerInputDirective.ɵdir = i0__namespace.ɵɵ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: [
2262
2704
  SKY_DATEPICKER_VALUE_ACCESSOR,
2263
2705
  SKY_DATEPICKER_VALIDATOR,
2264
- SkyDatepickerAdapterService
2706
+ SkyDatepickerAdapterService,
2265
2707
  ], ngImport: i0__namespace });
2266
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerInputDirective, decorators: [{
2708
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerInputDirective, decorators: [{
2267
2709
  type: i0.Directive,
2268
2710
  args: [{
2269
2711
  selector: '[skyDatepickerInput]',
2270
2712
  providers: [
2271
2713
  SKY_DATEPICKER_VALUE_ACCESSOR,
2272
2714
  SKY_DATEPICKER_VALIDATOR,
2273
- SkyDatepickerAdapterService
2274
- ]
2715
+ SkyDatepickerAdapterService,
2716
+ ],
2275
2717
  }]
2276
2718
  }], ctorParameters: function () {
2277
2719
  return [{ type: SkyDatepickerAdapterService }, { type: i0__namespace.ChangeDetectorRef }, { type: SkyDatepickerConfigService }, { type: i0__namespace.ElementRef }, { type: i3__namespace.SkyAppLocaleProvider }, { type: i0__namespace.Renderer2 }, { type: i3__namespace.SkyLibResourcesService }, { type: SkyDatepickerComponent, decorators: [{
@@ -2308,12 +2750,12 @@
2308
2750
  var SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR = {
2309
2751
  provide: i2$2.NG_VALUE_ACCESSOR,
2310
2752
  useExisting: i0.forwardRef(function () { return SkyFuzzyDatepickerInputDirective; }),
2311
- multi: true
2753
+ multi: true,
2312
2754
  };
2313
2755
  var SKY_FUZZY_DATEPICKER_VALIDATOR = {
2314
2756
  provide: i2$2.NG_VALIDATORS,
2315
2757
  useExisting: i0.forwardRef(function () { return SkyFuzzyDatepickerInputDirective; }),
2316
- multi: true
2758
+ multi: true,
2317
2759
  };
2318
2760
  // tslint:enable
2319
2761
  var SkyFuzzyDatepickerInputDirective = /** @class */ (function () {
@@ -2342,19 +2784,21 @@
2342
2784
  /*istanbul ignore next */
2343
2785
  this.onTouched = function () { };
2344
2786
  this.onValidatorChange = function () { };
2345
- this.localeProvider.getLocaleInfo()
2787
+ this.localeProvider
2788
+ .getLocaleInfo()
2346
2789
  .pipe(operators.takeUntil(this.ngUnsubscribe))
2347
2790
  .subscribe(function (localeInfo) {
2348
2791
  _this.locale = localeInfo.locale;
2349
2792
  SkyDateFormatter.setLocale(_this.locale);
2350
- _this.preferredShortDateFormat = SkyDateFormatter.getPreferredShortDateFormat();
2793
+ _this.preferredShortDateFormat =
2794
+ SkyDateFormatter.getPreferredShortDateFormat();
2351
2795
  });
2352
2796
  }
2353
2797
  Object.defineProperty(SkyFuzzyDatepickerInputDirective.prototype, "dateFormat", {
2354
2798
  get: function () {
2355
- return this._dateFormat ||
2799
+ return (this._dateFormat ||
2356
2800
  this.configService.dateFormat ||
2357
- this.preferredShortDateFormat;
2801
+ this.preferredShortDateFormat);
2358
2802
  },
2359
2803
  /**
2360
2804
  * Specifies the date format for the input. Place this attribute on the `input` element
@@ -2520,8 +2964,7 @@
2520
2964
  }
2521
2965
  }
2522
2966
  var areFuzzyDatesEqual = this.fuzzyDatesEqual(this._value, fuzzyDate);
2523
- var isNewValue = (fuzzyDate !== this._value ||
2524
- !areFuzzyDatesEqual);
2967
+ var isNewValue = fuzzyDate !== this._value || !areFuzzyDatesEqual;
2525
2968
  this._value = fuzzyDate || value;
2526
2969
  if (isNewValue) {
2527
2970
  this.onChange(this._value);
@@ -2556,7 +2999,8 @@
2556
2999
  var hasAriaLabel = element.getAttribute('aria-label');
2557
3000
  /* istanbul ignore else */
2558
3001
  if (!hasAriaLabel) {
2559
- this.resourcesService.getString('skyux_date_field_default_label')
3002
+ this.resourcesService
3003
+ .getString('skyux_date_field_default_label')
2560
3004
  .pipe(operators.takeUntil(this.ngUnsubscribe))
2561
3005
  .subscribe(function (value) {
2562
3006
  _this.renderer.setAttribute(element, 'aria-label', value);
@@ -2584,7 +3028,7 @@
2584
3028
  if (this.control && this.control.parent) {
2585
3029
  setTimeout(function () {
2586
3030
  _this.control.setValue(_this.value, {
2587
- emitEvent: false
3031
+ emitEvent: false,
2588
3032
  });
2589
3033
  _this.changeDetector.markForCheck();
2590
3034
  });
@@ -2631,16 +3075,16 @@
2631
3075
  }
2632
3076
  if (!fuzzyDate) {
2633
3077
  validationError = {
2634
- 'skyFuzzyDate': {
2635
- invalid: value
2636
- }
3078
+ skyFuzzyDate: {
3079
+ invalid: value,
3080
+ },
2637
3081
  };
2638
3082
  }
2639
3083
  if (!validationError && !fuzzyDate.year && this.yearRequired) {
2640
3084
  validationError = {
2641
- 'skyFuzzyDate': {
2642
- yearRequired: value
2643
- }
3085
+ skyFuzzyDate: {
3086
+ yearRequired: value,
3087
+ },
2644
3088
  };
2645
3089
  }
2646
3090
  if (!validationError && fuzzyDate.year) {
@@ -2649,9 +3093,9 @@
2649
3093
  fuzzyDateRange = this.fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.maxDate);
2650
3094
  if (!fuzzyDateRange.valid) {
2651
3095
  validationError = {
2652
- 'skyFuzzyDate': {
2653
- maxDate: value
2654
- }
3096
+ skyFuzzyDate: {
3097
+ maxDate: value,
3098
+ },
2655
3099
  };
2656
3100
  }
2657
3101
  }
@@ -2659,9 +3103,9 @@
2659
3103
  fuzzyDateRange = this.fuzzyDateService.getFuzzyDateRange(this.minDate, fuzzyDate);
2660
3104
  if (!fuzzyDateRange.valid) {
2661
3105
  validationError = {
2662
- 'skyFuzzyDate': {
2663
- minDate: value
2664
- }
3106
+ skyFuzzyDate: {
3107
+ minDate: value,
3108
+ },
2665
3109
  };
2666
3110
  }
2667
3111
  }
@@ -2669,9 +3113,9 @@
2669
3113
  fuzzyDateRange = this.fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.fuzzyDateService.getCurrentFuzzyDate());
2670
3114
  if (!fuzzyDateRange.valid) {
2671
3115
  validationError = {
2672
- 'skyFuzzyDate': {
2673
- futureDisabled: value
2674
- }
3116
+ skyFuzzyDate: {
3117
+ futureDisabled: value,
3118
+ },
2675
3119
  };
2676
3120
  }
2677
3121
  }
@@ -2733,29 +3177,27 @@
2733
3177
  };
2734
3178
  /* istanbul ignore next */
2735
3179
  SkyFuzzyDatepickerInputDirective.prototype.fuzzyDatesEqual = function (dateA, dateB) {
2736
- return dateA && dateB
2737
- && ((!dateA.day && !dateB.day)
2738
- || dateA.day === dateB.day)
2739
- && ((!dateA.month && !dateB.month)
2740
- || dateA.month === dateB.month)
2741
- && ((!dateA.year && !dateB.year)
2742
- || dateA.year === dateB.year);
3180
+ return (dateA &&
3181
+ dateB &&
3182
+ ((!dateA.day && !dateB.day) || dateA.day === dateB.day) &&
3183
+ ((!dateA.month && !dateB.month) || dateA.month === dateB.month) &&
3184
+ ((!dateA.year && !dateB.year) || dateA.year === dateB.year));
2743
3185
  };
2744
3186
  return SkyFuzzyDatepickerInputDirective;
2745
3187
  }());
2746
- SkyFuzzyDatepickerInputDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0__namespace.ElementRef }, { token: SkyFuzzyDateService }, { token: i3__namespace.SkyAppLocaleProvider }, { token: i0__namespace.Renderer2 }, { token: i3__namespace.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
2747
- SkyFuzzyDatepickerInputDirective.ɵdir = i0__namespace.ɵɵ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: [
3188
+ SkyFuzzyDatepickerInputDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0__namespace.ElementRef }, { token: SkyFuzzyDateService }, { token: i3__namespace.SkyAppLocaleProvider }, { token: i0__namespace.Renderer2 }, { token: i3__namespace.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
3189
+ SkyFuzzyDatepickerInputDirective.ɵdir = i0__namespace.ɵɵ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: [
2748
3190
  SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,
2749
- SKY_FUZZY_DATEPICKER_VALIDATOR
3191
+ SKY_FUZZY_DATEPICKER_VALIDATOR,
2750
3192
  ], ngImport: i0__namespace });
2751
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyFuzzyDatepickerInputDirective, decorators: [{
3193
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyFuzzyDatepickerInputDirective, decorators: [{
2752
3194
  type: i0.Directive,
2753
3195
  args: [{
2754
3196
  selector: '[skyFuzzyDatepickerInput]',
2755
3197
  providers: [
2756
3198
  SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,
2757
- SKY_FUZZY_DATEPICKER_VALIDATOR
2758
- ]
3199
+ SKY_FUZZY_DATEPICKER_VALIDATOR,
3200
+ ],
2759
3201
  }]
2760
3202
  }], ctorParameters: function () {
2761
3203
  return [{ type: i0__namespace.ChangeDetectorRef }, { type: SkyDatepickerConfigService }, { type: i0__namespace.ElementRef }, { type: SkyFuzzyDateService }, { type: i3__namespace.SkyAppLocaleProvider }, { type: i0__namespace.Renderer2 }, { type: i3__namespace.SkyLibResourcesService }, { type: SkyDatepickerComponent, decorators: [{
@@ -2795,36 +3237,42 @@
2795
3237
  }
2796
3238
  return SkyDatepickerModule;
2797
3239
  }());
2798
- SkyDatepickerModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
2799
- SkyDatepickerModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerModule, declarations: [SkyDatepickerCalendarComponent,
3240
+ SkyDatepickerModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
3241
+ SkyDatepickerModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerModule, declarations: [SkyDatepickerCalendarComponent,
2800
3242
  SkyDatepickerCalendarInnerComponent,
2801
3243
  SkyDayPickerComponent,
2802
3244
  SkyMonthPickerComponent,
2803
3245
  SkyYearPickerComponent,
2804
3246
  SkyDatepickerComponent,
2805
3247
  SkyDatepickerInputDirective,
2806
- SkyFuzzyDatepickerInputDirective], imports: [i3$1.CommonModule,
3248
+ SkyFuzzyDatepickerInputDirective,
3249
+ SkyDayPickerCellComponent,
3250
+ SkyDayPickerButtonComponent], imports: [i5.CommonModule,
2807
3251
  i3.SkyI18nModule,
2808
3252
  i2$2.FormsModule,
2809
3253
  i2.SkyIconModule,
2810
3254
  SkyDatetimeResourcesModule,
2811
3255
  i1.SkyAffixModule,
2812
3256
  i1.SkyOverlayModule,
2813
- i3$2.SkyThemeModule], exports: [SkyDatepickerCalendarComponent,
3257
+ i3$2.SkyThemeModule,
3258
+ i3$1.SkyPopoverModule,
3259
+ i2.SkyWaitModule], exports: [SkyDatepickerCalendarComponent,
2814
3260
  SkyDatepickerComponent,
2815
3261
  SkyDatepickerInputDirective,
2816
3262
  SkyFuzzyDatepickerInputDirective] });
2817
- SkyDatepickerModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerModule, imports: [[
2818
- i3$1.CommonModule,
3263
+ SkyDatepickerModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerModule, providers: [SkyDatepickerService], imports: [[
3264
+ i5.CommonModule,
2819
3265
  i3.SkyI18nModule,
2820
3266
  i2$2.FormsModule,
2821
3267
  i2.SkyIconModule,
2822
3268
  SkyDatetimeResourcesModule,
2823
3269
  i1.SkyAffixModule,
2824
3270
  i1.SkyOverlayModule,
2825
- i3$2.SkyThemeModule
3271
+ i3$2.SkyThemeModule,
3272
+ i3$1.SkyPopoverModule,
3273
+ i2.SkyWaitModule,
2826
3274
  ]] });
2827
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDatepickerModule, decorators: [{
3275
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDatepickerModule, decorators: [{
2828
3276
  type: i0.NgModule,
2829
3277
  args: [{
2830
3278
  declarations: [
@@ -2835,24 +3283,29 @@
2835
3283
  SkyYearPickerComponent,
2836
3284
  SkyDatepickerComponent,
2837
3285
  SkyDatepickerInputDirective,
2838
- SkyFuzzyDatepickerInputDirective
3286
+ SkyFuzzyDatepickerInputDirective,
3287
+ SkyDayPickerCellComponent,
3288
+ SkyDayPickerButtonComponent,
2839
3289
  ],
2840
3290
  imports: [
2841
- i3$1.CommonModule,
3291
+ i5.CommonModule,
2842
3292
  i3.SkyI18nModule,
2843
3293
  i2$2.FormsModule,
2844
3294
  i2.SkyIconModule,
2845
3295
  SkyDatetimeResourcesModule,
2846
3296
  i1.SkyAffixModule,
2847
3297
  i1.SkyOverlayModule,
2848
- i3$2.SkyThemeModule
3298
+ i3$2.SkyThemeModule,
3299
+ i3$1.SkyPopoverModule,
3300
+ i2.SkyWaitModule,
2849
3301
  ],
2850
3302
  exports: [
2851
3303
  SkyDatepickerCalendarComponent,
2852
3304
  SkyDatepickerComponent,
2853
3305
  SkyDatepickerInputDirective,
2854
- SkyFuzzyDatepickerInputDirective
2855
- ]
3306
+ SkyFuzzyDatepickerInputDirective,
3307
+ ],
3308
+ providers: [SkyDatepickerService],
2856
3309
  }]
2857
3310
  }] });
2858
3311
 
@@ -2891,7 +3344,7 @@
2891
3344
  return {
2892
3345
  calculatorId: this.calculatorId,
2893
3346
  startDate: startDate,
2894
- endDate: endDate
3347
+ endDate: endDate,
2895
3348
  };
2896
3349
  };
2897
3350
  /**
@@ -2929,7 +3382,7 @@
2929
3382
  var today = new Date();
2930
3383
  return {
2931
3384
  startDate: today,
2932
- endDate: today
3385
+ endDate: today,
2933
3386
  };
2934
3387
  },
2935
3388
  enumerable: false,
@@ -2941,7 +3394,7 @@
2941
3394
  tomorrow.setDate(tomorrow.getDate() + 1);
2942
3395
  return {
2943
3396
  startDate: tomorrow,
2944
- endDate: tomorrow
3397
+ endDate: tomorrow,
2945
3398
  };
2946
3399
  },
2947
3400
  enumerable: false,
@@ -2953,7 +3406,7 @@
2953
3406
  yesterday.setDate(yesterday.getDate() - 1);
2954
3407
  return {
2955
3408
  startDate: yesterday,
2956
- endDate: yesterday
3409
+ endDate: yesterday,
2957
3410
  };
2958
3411
  },
2959
3412
  enumerable: false,
@@ -2970,7 +3423,7 @@
2970
3423
  endDate.setDate(endDate.getDate() - endDate.getDay() + 6);
2971
3424
  return {
2972
3425
  startDate: startDate,
2973
- endDate: endDate
3426
+ endDate: endDate,
2974
3427
  };
2975
3428
  },
2976
3429
  enumerable: false,
@@ -2987,7 +3440,7 @@
2987
3440
  endDate.setDate(endDate.getDate() - endDate.getDay() + 13);
2988
3441
  return {
2989
3442
  startDate: startDate,
2990
- endDate: endDate
3443
+ endDate: endDate,
2991
3444
  };
2992
3445
  },
2993
3446
  enumerable: false,
@@ -3001,7 +3454,7 @@
3001
3454
  endDate.setDate(endDate.getDate() - endDate.getDay() - 1);
3002
3455
  return {
3003
3456
  startDate: startDate,
3004
- endDate: endDate
3457
+ endDate: endDate,
3005
3458
  };
3006
3459
  },
3007
3460
  enumerable: false,
@@ -3016,7 +3469,7 @@
3016
3469
  endDate.setDate(0);
3017
3470
  return {
3018
3471
  startDate: startDate,
3019
- endDate: endDate
3472
+ endDate: endDate,
3020
3473
  };
3021
3474
  },
3022
3475
  enumerable: false,
@@ -3033,7 +3486,7 @@
3033
3486
  endDate.setDate(0);
3034
3487
  return {
3035
3488
  startDate: startDate,
3036
- endDate: endDate
3489
+ endDate: endDate,
3037
3490
  };
3038
3491
  },
3039
3492
  enumerable: false,
@@ -3051,7 +3504,7 @@
3051
3504
  endDate.setDate(0);
3052
3505
  return {
3053
3506
  startDate: startDate,
3054
- endDate: endDate
3507
+ endDate: endDate,
3055
3508
  };
3056
3509
  },
3057
3510
  enumerable: false,
@@ -3069,7 +3522,7 @@
3069
3522
  endDate.setDate(0);
3070
3523
  return {
3071
3524
  startDate: startDate,
3072
- endDate: endDate
3525
+ endDate: endDate,
3073
3526
  };
3074
3527
  },
3075
3528
  enumerable: false,
@@ -3087,7 +3540,7 @@
3087
3540
  endDate.setDate(0);
3088
3541
  return {
3089
3542
  startDate: startDate,
3090
- endDate: endDate
3543
+ endDate: endDate,
3091
3544
  };
3092
3545
  },
3093
3546
  enumerable: false,
@@ -3107,7 +3560,7 @@
3107
3560
  endDate.setDate(0);
3108
3561
  return {
3109
3562
  startDate: startDate,
3110
- endDate: endDate
3563
+ endDate: endDate,
3111
3564
  };
3112
3565
  },
3113
3566
  enumerable: false,
@@ -3125,7 +3578,7 @@
3125
3578
  endDate.setDate(0);
3126
3579
  return {
3127
3580
  startDate: startDate,
3128
- endDate: endDate
3581
+ endDate: endDate,
3129
3582
  };
3130
3583
  },
3131
3584
  enumerable: false,
@@ -3144,7 +3597,7 @@
3144
3597
  endDate.setDate(0);
3145
3598
  return {
3146
3599
  startDate: startDate,
3147
- endDate: endDate
3600
+ endDate: endDate,
3148
3601
  };
3149
3602
  },
3150
3603
  enumerable: false,
@@ -3162,7 +3615,7 @@
3162
3615
  endDate.setDate(0);
3163
3616
  return {
3164
3617
  startDate: startDate,
3165
- endDate: endDate
3618
+ endDate: endDate,
3166
3619
  };
3167
3620
  },
3168
3621
  enumerable: false,
@@ -3233,7 +3686,7 @@
3233
3686
  }
3234
3687
  return {
3235
3688
  startDate: startDate,
3236
- endDate: endDate
3689
+ endDate: endDate,
3237
3690
  };
3238
3691
  };
3239
3692
  return SkyDateRangeRelativeValue;
@@ -3244,19 +3697,19 @@
3244
3697
  calculatorId: exports.SkyDateRangeCalculatorId.AnyTime,
3245
3698
  type: exports.SkyDateRangeCalculatorType.Relative,
3246
3699
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_any_time',
3247
- getValue: function (startDate, endDate) { return ({ startDate: startDate, endDate: endDate }); }
3700
+ getValue: function (startDate, endDate) { return ({ startDate: startDate, endDate: endDate }); },
3248
3701
  },
3249
3702
  {
3250
3703
  calculatorId: exports.SkyDateRangeCalculatorId.Before,
3251
3704
  type: exports.SkyDateRangeCalculatorType.Before,
3252
3705
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_before',
3253
- getValue: function (startDate, endDate) { return ({ startDate: startDate, endDate: endDate }); }
3706
+ getValue: function (startDate, endDate) { return ({ startDate: startDate, endDate: endDate }); },
3254
3707
  },
3255
3708
  {
3256
3709
  calculatorId: exports.SkyDateRangeCalculatorId.After,
3257
3710
  type: exports.SkyDateRangeCalculatorType.After,
3258
3711
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_after',
3259
- getValue: function (startDate, endDate) { return ({ startDate: startDate, endDate: endDate }); }
3712
+ getValue: function (startDate, endDate) { return ({ startDate: startDate, endDate: endDate }); },
3260
3713
  },
3261
3714
  {
3262
3715
  calculatorId: exports.SkyDateRangeCalculatorId.SpecificRange,
@@ -3268,119 +3721,119 @@
3268
3721
  value.endDate &&
3269
3722
  value.startDate > value.endDate) {
3270
3723
  return {
3271
- 'endDateBeforeStartDate': true
3724
+ endDateBeforeStartDate: true,
3272
3725
  };
3273
3726
  }
3274
- }
3727
+ },
3275
3728
  },
3276
3729
  {
3277
3730
  calculatorId: exports.SkyDateRangeCalculatorId.LastFiscalYear,
3278
3731
  type: exports.SkyDateRangeCalculatorType.Relative,
3279
3732
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_fiscal_year',
3280
- getValue: function () { return SkyDateRangeRelativeValue.lastFiscalYear; }
3733
+ getValue: function () { return SkyDateRangeRelativeValue.lastFiscalYear; },
3281
3734
  },
3282
3735
  {
3283
3736
  calculatorId: exports.SkyDateRangeCalculatorId.LastMonth,
3284
3737
  type: exports.SkyDateRangeCalculatorType.Relative,
3285
3738
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_month',
3286
- getValue: function () { return SkyDateRangeRelativeValue.lastMonth; }
3739
+ getValue: function () { return SkyDateRangeRelativeValue.lastMonth; },
3287
3740
  },
3288
3741
  {
3289
3742
  calculatorId: exports.SkyDateRangeCalculatorId.LastQuarter,
3290
3743
  type: exports.SkyDateRangeCalculatorType.Relative,
3291
3744
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_quarter',
3292
- getValue: function () { return SkyDateRangeRelativeValue.lastQuarter; }
3745
+ getValue: function () { return SkyDateRangeRelativeValue.lastQuarter; },
3293
3746
  },
3294
3747
  {
3295
3748
  calculatorId: exports.SkyDateRangeCalculatorId.LastWeek,
3296
3749
  type: exports.SkyDateRangeCalculatorType.Relative,
3297
3750
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_week',
3298
- getValue: function () { return SkyDateRangeRelativeValue.lastWeek; }
3751
+ getValue: function () { return SkyDateRangeRelativeValue.lastWeek; },
3299
3752
  },
3300
3753
  {
3301
3754
  calculatorId: exports.SkyDateRangeCalculatorId.LastCalendarYear,
3302
3755
  type: exports.SkyDateRangeCalculatorType.Relative,
3303
3756
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_calendar_year',
3304
- getValue: function () { return SkyDateRangeRelativeValue.lastCalendarYear; }
3757
+ getValue: function () { return SkyDateRangeRelativeValue.lastCalendarYear; },
3305
3758
  },
3306
3759
  {
3307
3760
  calculatorId: exports.SkyDateRangeCalculatorId.NextFiscalYear,
3308
3761
  type: exports.SkyDateRangeCalculatorType.Relative,
3309
3762
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_fiscal_year',
3310
- getValue: function () { return SkyDateRangeRelativeValue.nextFiscalYear; }
3763
+ getValue: function () { return SkyDateRangeRelativeValue.nextFiscalYear; },
3311
3764
  },
3312
3765
  {
3313
3766
  calculatorId: exports.SkyDateRangeCalculatorId.NextMonth,
3314
3767
  type: exports.SkyDateRangeCalculatorType.Relative,
3315
3768
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_month',
3316
- getValue: function () { return SkyDateRangeRelativeValue.nextMonth; }
3769
+ getValue: function () { return SkyDateRangeRelativeValue.nextMonth; },
3317
3770
  },
3318
3771
  {
3319
3772
  calculatorId: exports.SkyDateRangeCalculatorId.NextQuarter,
3320
3773
  type: exports.SkyDateRangeCalculatorType.Relative,
3321
3774
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_quarter',
3322
- getValue: function () { return SkyDateRangeRelativeValue.nextQuarter; }
3775
+ getValue: function () { return SkyDateRangeRelativeValue.nextQuarter; },
3323
3776
  },
3324
3777
  {
3325
3778
  calculatorId: exports.SkyDateRangeCalculatorId.NextWeek,
3326
3779
  type: exports.SkyDateRangeCalculatorType.Relative,
3327
3780
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_week',
3328
- getValue: function () { return SkyDateRangeRelativeValue.nextWeek; }
3781
+ getValue: function () { return SkyDateRangeRelativeValue.nextWeek; },
3329
3782
  },
3330
3783
  {
3331
3784
  calculatorId: exports.SkyDateRangeCalculatorId.NextCalendarYear,
3332
3785
  type: exports.SkyDateRangeCalculatorType.Relative,
3333
3786
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_calendar_year',
3334
- getValue: function () { return SkyDateRangeRelativeValue.nextCalendarYear; }
3787
+ getValue: function () { return SkyDateRangeRelativeValue.nextCalendarYear; },
3335
3788
  },
3336
3789
  {
3337
3790
  calculatorId: exports.SkyDateRangeCalculatorId.ThisFiscalYear,
3338
3791
  type: exports.SkyDateRangeCalculatorType.Relative,
3339
3792
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_fiscal_year',
3340
- getValue: function () { return SkyDateRangeRelativeValue.thisFiscalYear; }
3793
+ getValue: function () { return SkyDateRangeRelativeValue.thisFiscalYear; },
3341
3794
  },
3342
3795
  {
3343
3796
  calculatorId: exports.SkyDateRangeCalculatorId.ThisMonth,
3344
3797
  type: exports.SkyDateRangeCalculatorType.Relative,
3345
3798
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_month',
3346
- getValue: function () { return SkyDateRangeRelativeValue.thisMonth; }
3799
+ getValue: function () { return SkyDateRangeRelativeValue.thisMonth; },
3347
3800
  },
3348
3801
  {
3349
3802
  calculatorId: exports.SkyDateRangeCalculatorId.ThisQuarter,
3350
3803
  type: exports.SkyDateRangeCalculatorType.Relative,
3351
3804
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_quarter',
3352
- getValue: function () { return SkyDateRangeRelativeValue.thisQuarter; }
3805
+ getValue: function () { return SkyDateRangeRelativeValue.thisQuarter; },
3353
3806
  },
3354
3807
  {
3355
3808
  calculatorId: exports.SkyDateRangeCalculatorId.ThisWeek,
3356
3809
  type: exports.SkyDateRangeCalculatorType.Relative,
3357
3810
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_week',
3358
- getValue: function () { return SkyDateRangeRelativeValue.thisWeek; }
3811
+ getValue: function () { return SkyDateRangeRelativeValue.thisWeek; },
3359
3812
  },
3360
3813
  {
3361
3814
  calculatorId: exports.SkyDateRangeCalculatorId.ThisCalendarYear,
3362
3815
  type: exports.SkyDateRangeCalculatorType.Relative,
3363
3816
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_calendar_year',
3364
- getValue: function () { return SkyDateRangeRelativeValue.thisCalendarYear; }
3817
+ getValue: function () { return SkyDateRangeRelativeValue.thisCalendarYear; },
3365
3818
  },
3366
3819
  {
3367
3820
  calculatorId: exports.SkyDateRangeCalculatorId.Today,
3368
3821
  type: exports.SkyDateRangeCalculatorType.Relative,
3369
3822
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_today',
3370
- getValue: function () { return SkyDateRangeRelativeValue.today; }
3823
+ getValue: function () { return SkyDateRangeRelativeValue.today; },
3371
3824
  },
3372
3825
  {
3373
3826
  calculatorId: exports.SkyDateRangeCalculatorId.Tomorrow,
3374
3827
  type: exports.SkyDateRangeCalculatorType.Relative,
3375
3828
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_tomorrow',
3376
- getValue: function () { return SkyDateRangeRelativeValue.tomorrow; }
3829
+ getValue: function () { return SkyDateRangeRelativeValue.tomorrow; },
3377
3830
  },
3378
3831
  {
3379
3832
  calculatorId: exports.SkyDateRangeCalculatorId.Yesterday,
3380
3833
  type: exports.SkyDateRangeCalculatorType.Relative,
3381
3834
  shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_yesterday',
3382
- getValue: function () { return SkyDateRangeRelativeValue.yesterday; }
3383
- }
3835
+ getValue: function () { return SkyDateRangeRelativeValue.yesterday; },
3836
+ },
3384
3837
  ];
3385
3838
 
3386
3839
  /**
@@ -3423,16 +3876,14 @@
3423
3876
  var _this = this;
3424
3877
  var calculatorId = parseInt(id, 10);
3425
3878
  var found = this.calculators.find(function (calculator) {
3426
- return (calculator.calculatorId === calculatorId);
3879
+ return calculator.calculatorId === calculatorId;
3427
3880
  });
3428
3881
  return new Promise(function (resolve, reject) {
3429
3882
  if (!found) {
3430
3883
  reject(new Error("A calculator with the ID " + id + " was not found."));
3431
3884
  return;
3432
3885
  }
3433
- _this.calculatorReadyStream
3434
- .pipe(operators.first())
3435
- .subscribe(function () {
3886
+ _this.calculatorReadyStream.pipe(operators.first()).subscribe(function () {
3436
3887
  resolve(found);
3437
3888
  });
3438
3889
  });
@@ -3446,7 +3897,7 @@
3446
3897
  getValue: defaultConfig.getValue,
3447
3898
  validate: defaultConfig.validate,
3448
3899
  shortDescription: '',
3449
- type: defaultConfig.type
3900
+ type: defaultConfig.type,
3450
3901
  };
3451
3902
  tasks.push(_this.resourcesService
3452
3903
  .getString(defaultConfig.shortDescriptionResourceKey)
@@ -3472,25 +3923,22 @@
3472
3923
  // Start the count higher than the number of available values
3473
3924
  // provided in the SkyDateRangeCalculatorId enum.
3474
3925
  SkyDateRangeService.lastId = 1000;
3475
- SkyDateRangeService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangeService, deps: [{ token: i3__namespace.SkyLibResourcesService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
3476
- SkyDateRangeService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangeService, providedIn: 'any' });
3477
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangeService, decorators: [{
3478
- type: i0.Injectable,
3479
- args: [{
3480
- providedIn: 'any'
3481
- }]
3926
+ SkyDateRangeService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangeService, deps: [{ token: i3__namespace.SkyLibResourcesService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
3927
+ SkyDateRangeService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangeService });
3928
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangeService, decorators: [{
3929
+ type: i0.Injectable
3482
3930
  }], ctorParameters: function () { return [{ type: i3__namespace.SkyLibResourcesService }]; } });
3483
3931
 
3484
3932
  /* tslint:disable:no-forward-ref no-use-before-declare */
3485
3933
  var SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR = {
3486
3934
  provide: i2$2.NG_VALUE_ACCESSOR,
3487
3935
  useExisting: i0.forwardRef(function () { return SkyDateRangePickerComponent; }),
3488
- multi: true
3936
+ multi: true,
3489
3937
  };
3490
3938
  var SKY_DATE_RANGE_PICKER_VALIDATOR = {
3491
3939
  provide: i2$2.NG_VALIDATORS,
3492
3940
  useExisting: i0.forwardRef(function () { return SkyDateRangePickerComponent; }),
3493
- multi: true
3941
+ multi: true,
3494
3942
  };
3495
3943
  /* tslint:enable */
3496
3944
  var uniqueId = 0;
@@ -3534,11 +3982,13 @@
3534
3982
  this.onTouched = function () { };
3535
3983
  /* istanbul ignore next */
3536
3984
  this.onValidatorChange = function () { };
3537
- this.localeProvider.getLocaleInfo()
3985
+ this.localeProvider
3986
+ .getLocaleInfo()
3538
3987
  .pipe(operators.takeUntil(this.ngUnsubscribe))
3539
3988
  .subscribe(function (localeInfo) {
3540
3989
  SkyDateFormatter.setLocale(localeInfo.locale);
3541
- _this.preferredShortDateFormat = SkyDateFormatter.getPreferredShortDateFormat();
3990
+ _this.preferredShortDateFormat =
3991
+ SkyDateFormatter.getPreferredShortDateFormat();
3542
3992
  });
3543
3993
  // Update icons when theme changes.
3544
3994
  /* istanbul ignore next */
@@ -3548,7 +3998,7 @@
3548
3998
  }
3549
3999
  Object.defineProperty(SkyDateRangePickerComponent.prototype, "calculatorIds", {
3550
4000
  get: function () {
3551
- return this._calculatorIds || [
4001
+ return (this._calculatorIds || [
3552
4002
  exports.SkyDateRangeCalculatorId.AnyTime,
3553
4003
  exports.SkyDateRangeCalculatorId.Before,
3554
4004
  exports.SkyDateRangeCalculatorId.After,
@@ -3570,8 +4020,8 @@
3570
4020
  exports.SkyDateRangeCalculatorId.NextCalendarYear,
3571
4021
  exports.SkyDateRangeCalculatorId.LastFiscalYear,
3572
4022
  exports.SkyDateRangeCalculatorId.ThisFiscalYear,
3573
- exports.SkyDateRangeCalculatorId.NextFiscalYear
3574
- ];
4023
+ exports.SkyDateRangeCalculatorId.NextFiscalYear,
4024
+ ]);
3575
4025
  },
3576
4026
  /**
3577
4027
  * Specifies IDs for the date range options to include in the picker's dropdown.
@@ -3688,8 +4138,7 @@
3688
4138
  });
3689
4139
  Object.defineProperty(SkyDateRangePickerComponent.prototype, "value", {
3690
4140
  get: function () {
3691
- if (this._value &&
3692
- this._value.calculatorId !== undefined) {
4141
+ if (this._value && this._value.calculatorId !== undefined) {
3693
4142
  return this._value;
3694
4143
  }
3695
4144
  return this.defaultValue;
@@ -3718,21 +4167,20 @@
3718
4167
  /* istanbul ignore else */
3719
4168
  if (_this.control) {
3720
4169
  _this.control.setValue(_this.value, {
3721
- emitEvent: false
4170
+ emitEvent: false,
3722
4171
  });
3723
4172
  }
3724
4173
  });
3725
4174
  };
3726
4175
  SkyDateRangePickerComponent.prototype.ngOnChanges = function (changes) {
3727
4176
  var _this = this;
3728
- if (changes.calculatorIds &&
3729
- changes.calculatorIds.firstChange === false) {
4177
+ if (changes.calculatorIds && changes.calculatorIds.firstChange === false) {
3730
4178
  this.updateCalculators().then(function () {
3731
4179
  var id = _this.calculatorIdControl.value;
3732
4180
  // Maintain the currently selected values if the calculators change after
3733
4181
  // a value has been chosen.
3734
4182
  var found = _this.calculators.find(function (calculator) {
3735
- return (calculator.calculatorId === id);
4183
+ return calculator.calculatorId === id;
3736
4184
  });
3737
4185
  /* istanbul ignore else */
3738
4186
  if (!found) {
@@ -3781,8 +4229,8 @@
3781
4229
  errors = {
3782
4230
  skyDateRange: {
3783
4231
  calculatorId: idControl.value,
3784
- errors: result
3785
- }
4232
+ errors: result,
4233
+ },
3786
4234
  };
3787
4235
  }
3788
4236
  else {
@@ -3833,7 +4281,7 @@
3833
4281
  this.formGroup = this.formBuilder.group({
3834
4282
  calculatorId: new i2$2.FormControl(),
3835
4283
  startDate: new i2$2.FormControl(),
3836
- endDate: new i2$2.FormControl()
4284
+ endDate: new i2$2.FormControl(),
3837
4285
  });
3838
4286
  if (this.disabled) {
3839
4287
  this.formGroup.disable();
@@ -3868,7 +4316,7 @@
3868
4316
  // listeners to be triggered, as those are reserved for user interactions.
3869
4317
  // (See the event listeners listed below.)
3870
4318
  this.formGroup.reset(value || this.value, {
3871
- emitEvent: false
4319
+ emitEvent: false,
3872
4320
  });
3873
4321
  };
3874
4322
  SkyDateRangePickerComponent.prototype.addEventListeners = function () {
@@ -3877,7 +4325,7 @@
3877
4325
  // when control is initialized with a value.
3878
4326
  rxjs.combineLatest([
3879
4327
  this.startDateControl.statusChanges,
3880
- this.endDateControl.statusChanges
4328
+ this.endDateControl.statusChanges,
3881
4329
  ])
3882
4330
  .pipe(operators.first())
3883
4331
  .subscribe(function (status) {
@@ -3920,7 +4368,7 @@
3920
4368
  // Detect errors from the date inputs and update ng- classes on picker.
3921
4369
  rxjs.combineLatest([
3922
4370
  this.startDateControl.statusChanges,
3923
- this.endDateControl.statusChanges
4371
+ this.endDateControl.statusChanges,
3924
4372
  ])
3925
4373
  .pipe(operators.takeUntil(this.ngUnsubscribe))
3926
4374
  .subscribe(function () {
@@ -3942,26 +4390,26 @@
3942
4390
  });
3943
4391
  };
3944
4392
  SkyDateRangePickerComponent.prototype.dateRangesEqual = function (rangeA, rangeB) {
3945
- return (JSON.stringify(rangeA) === JSON.stringify(rangeB));
4393
+ return JSON.stringify(rangeA) === JSON.stringify(rangeB);
3946
4394
  };
3947
4395
  return SkyDateRangePickerComponent;
3948
4396
  }());
3949
- SkyDateRangePickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangePickerComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: SkyDateRangeService }, { token: i2__namespace$2.FormBuilder }, { token: i3__namespace.SkyAppLocaleProvider }, { token: i1__namespace.SkyAppWindowRef }, { token: i3__namespace$2.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
3950
- SkyDateRangePickerComponent.ɵcmp = i0__namespace.ɵɵ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: [
4397
+ SkyDateRangePickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangePickerComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: SkyDateRangeService }, { token: i2__namespace$2.FormBuilder }, { token: i3__namespace.SkyAppLocaleProvider }, { token: i1__namespace.SkyAppWindowRef }, { token: i3__namespace$2.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
4398
+ SkyDateRangePickerComponent.ɵcmp = i0__namespace.ɵɵ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: [
3951
4399
  SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR,
3952
- SKY_DATE_RANGE_PICKER_VALIDATOR
3953
- ], usesOnChanges: true, ngImport: i0__namespace, 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__namespace$1.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled"] }, { type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"] }], directives: [{ type: i3__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2__namespace$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2__namespace$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2__namespace$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2__namespace$2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2__namespace$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3__namespace$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2__namespace$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__namespace$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "skyLibResources": i3__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3954
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangePickerComponent, decorators: [{
4400
+ SKY_DATE_RANGE_PICKER_VALIDATOR,
4401
+ ], usesOnChanges: true, ngImport: i0__namespace, 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__namespace$1.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled"] }, { type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange"] }], directives: [{ type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2__namespace$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2__namespace$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2__namespace$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2__namespace$2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2__namespace$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2__namespace$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__namespace$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "skyLibResources": i3__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4402
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangePickerComponent, decorators: [{
3955
4403
  type: i0.Component,
3956
4404
  args: [{
3957
4405
  selector: 'sky-date-range-picker',
3958
- 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",
4406
+ 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",
3959
4407
  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"],
3960
4408
  providers: [
3961
4409
  SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR,
3962
- SKY_DATE_RANGE_PICKER_VALIDATOR
4410
+ SKY_DATE_RANGE_PICKER_VALIDATOR,
3963
4411
  ],
3964
- changeDetection: i0.ChangeDetectionStrategy.OnPush
4412
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3965
4413
  }]
3966
4414
  }], ctorParameters: function () {
3967
4415
  return [{ type: i0__namespace.ChangeDetectorRef }, { type: SkyDateRangeService }, { type: i2__namespace$2.FormBuilder }, { type: i3__namespace.SkyAppLocaleProvider }, { type: i1__namespace.SkyAppWindowRef }, { type: i3__namespace$2.SkyThemeService, decorators: [{
@@ -3986,41 +4434,38 @@
3986
4434
  }
3987
4435
  return SkyDateRangePickerModule;
3988
4436
  }());
3989
- SkyDateRangePickerModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangePickerModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
3990
- SkyDateRangePickerModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangePickerModule, declarations: [SkyDateRangePickerComponent], imports: [i3$1.CommonModule,
4437
+ SkyDateRangePickerModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangePickerModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
4438
+ SkyDateRangePickerModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangePickerModule, declarations: [SkyDateRangePickerComponent], imports: [i5.CommonModule,
3991
4439
  i2$2.FormsModule,
3992
4440
  i2$2.ReactiveFormsModule,
3993
4441
  i3.SkyI18nModule,
3994
4442
  SkyDatepickerModule,
3995
4443
  SkyDatetimeResourcesModule,
3996
4444
  i2$1.SkyInputBoxModule], exports: [SkyDateRangePickerComponent] });
3997
- SkyDateRangePickerModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangePickerModule, imports: [[
3998
- i3$1.CommonModule,
4445
+ SkyDateRangePickerModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangePickerModule, providers: [SkyDateRangeService], imports: [[
4446
+ i5.CommonModule,
3999
4447
  i2$2.FormsModule,
4000
4448
  i2$2.ReactiveFormsModule,
4001
4449
  i3.SkyI18nModule,
4002
4450
  SkyDatepickerModule,
4003
4451
  SkyDatetimeResourcesModule,
4004
- i2$1.SkyInputBoxModule
4452
+ i2$1.SkyInputBoxModule,
4005
4453
  ]] });
4006
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyDateRangePickerModule, decorators: [{
4454
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyDateRangePickerModule, decorators: [{
4007
4455
  type: i0.NgModule,
4008
4456
  args: [{
4009
- declarations: [
4010
- SkyDateRangePickerComponent
4011
- ],
4457
+ declarations: [SkyDateRangePickerComponent],
4012
4458
  imports: [
4013
- i3$1.CommonModule,
4459
+ i5.CommonModule,
4014
4460
  i2$2.FormsModule,
4015
4461
  i2$2.ReactiveFormsModule,
4016
4462
  i3.SkyI18nModule,
4017
4463
  SkyDatepickerModule,
4018
4464
  SkyDatetimeResourcesModule,
4019
- i2$1.SkyInputBoxModule
4465
+ i2$1.SkyInputBoxModule,
4020
4466
  ],
4021
- exports: [
4022
- SkyDateRangePickerComponent
4023
- ]
4467
+ exports: [SkyDateRangePickerComponent],
4468
+ providers: [SkyDateRangeService],
4024
4469
  }]
4025
4470
  }] });
4026
4471
 
@@ -4028,12 +4473,12 @@
4028
4473
  var SKY_TIMEPICKER_VALUE_ACCESSOR = {
4029
4474
  provide: i2$2.NG_VALUE_ACCESSOR,
4030
4475
  useExisting: i0.forwardRef(function () { return SkyTimepickerInputDirective; }),
4031
- multi: true
4476
+ multi: true,
4032
4477
  };
4033
4478
  var SKY_TIMEPICKER_VALIDATOR = {
4034
4479
  provide: i2$2.NG_VALIDATORS,
4035
4480
  useExisting: i0.forwardRef(function () { return SkyTimepickerInputDirective; }),
4036
- multi: true
4481
+ multi: true,
4037
4482
  };
4038
4483
  // tslint:enable
4039
4484
  var SkyTimepickerInputDirective = /** @class */ (function () {
@@ -4116,14 +4561,15 @@
4116
4561
  SkyTimepickerInputDirective.prototype.ngOnInit = function () {
4117
4562
  var _this = this;
4118
4563
  this.renderer.addClass(this.elRef.nativeElement, 'sky-form-control');
4119
- this.pickerChangedSubscription = this.skyTimepickerInput.selectedTimeChanged
4120
- .subscribe(function (newTime) {
4121
- _this.writeValue(newTime);
4122
- _this._onTouched();
4123
- });
4564
+ this.pickerChangedSubscription =
4565
+ this.skyTimepickerInput.selectedTimeChanged.subscribe(function (newTime) {
4566
+ _this.writeValue(newTime);
4567
+ _this._onTouched();
4568
+ });
4124
4569
  /* istanbul ignore else */
4125
4570
  if (!this.elRef.nativeElement.getAttribute('aria-label')) {
4126
- this.resourcesService.getString('skyux_timepicker_input_default_label')
4571
+ this.resourcesService
4572
+ .getString('skyux_timepicker_input_default_label')
4127
4573
  .subscribe(function (value) {
4128
4574
  _this.renderer.setAttribute(_this.elRef.nativeElement, 'aria-label', value);
4129
4575
  });
@@ -4134,7 +4580,7 @@
4134
4580
  /* istanbul ignore else */
4135
4581
  if (this.control && this.control.parent) {
4136
4582
  this.control.setValue(this.modelValue, {
4137
- emitEvent: false
4583
+ emitEvent: false,
4138
4584
  });
4139
4585
  this.changeDetector.markForCheck();
4140
4586
  }
@@ -4153,9 +4599,15 @@
4153
4599
  SkyTimepickerInputDirective.prototype.onBlur = function () {
4154
4600
  this._onTouched();
4155
4601
  };
4156
- SkyTimepickerInputDirective.prototype.registerOnChange = function (fn) { this._onChange = fn; };
4157
- SkyTimepickerInputDirective.prototype.registerOnTouched = function (fn) { this._onTouched = fn; };
4158
- SkyTimepickerInputDirective.prototype.registerOnValidatorChange = function (fn) { this._validatorChange = fn; };
4602
+ SkyTimepickerInputDirective.prototype.registerOnChange = function (fn) {
4603
+ this._onChange = fn;
4604
+ };
4605
+ SkyTimepickerInputDirective.prototype.registerOnTouched = function (fn) {
4606
+ this._onTouched = fn;
4607
+ };
4608
+ SkyTimepickerInputDirective.prototype.registerOnValidatorChange = function (fn) {
4609
+ this._validatorChange = fn;
4610
+ };
4159
4611
  SkyTimepickerInputDirective.prototype.setDisabledState = function (isDisabled) {
4160
4612
  this.disabled = isDisabled;
4161
4613
  };
@@ -4173,9 +4625,9 @@
4173
4625
  /* istanbul ignore next */
4174
4626
  if (value.local === 'Invalid date') {
4175
4627
  return {
4176
- 'skyTime': {
4177
- invalid: control.value
4178
- }
4628
+ skyTime: {
4629
+ invalid: control.value,
4630
+ },
4179
4631
  };
4180
4632
  }
4181
4633
  return undefined;
@@ -4211,13 +4663,13 @@
4211
4663
  this.returnFormat = currentFormat;
4212
4664
  }
4213
4665
  formatTime = {
4214
- 'hour': moment__default["default"](time, currentFormat).hour(),
4215
- 'minute': moment__default["default"](time, currentFormat).minute(),
4216
- 'meridie': moment__default["default"](time, currentFormat).format('A'),
4217
- 'timezone': parseInt(moment__default["default"](time, currentFormat).format('Z'), 10),
4218
- 'iso8601': moment__default["default"](time, currentFormat).toDate(),
4219
- 'local': moment__default["default"](time, currentFormat).format(currentFormat),
4220
- 'customFormat': this.returnFormat
4666
+ hour: moment__default["default"](time, currentFormat).hour(),
4667
+ minute: moment__default["default"](time, currentFormat).minute(),
4668
+ meridie: moment__default["default"](time, currentFormat).format('A'),
4669
+ timezone: parseInt(moment__default["default"](time, currentFormat).format('Z'), 10),
4670
+ iso8601: moment__default["default"](time, currentFormat).toDate(),
4671
+ local: moment__default["default"](time, currentFormat).format(currentFormat),
4672
+ customFormat: this.returnFormat,
4221
4673
  };
4222
4674
  return formatTime;
4223
4675
  }
@@ -4233,19 +4685,13 @@
4233
4685
  };
4234
4686
  return SkyTimepickerInputDirective;
4235
4687
  }());
4236
- SkyTimepickerInputDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerInputDirective, deps: [{ token: i0__namespace.Renderer2 }, { token: i0__namespace.ElementRef }, { token: i3__namespace.SkyLibResourcesService }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Directive });
4237
- SkyTimepickerInputDirective.ɵdir = i0__namespace.ɵɵ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: [
4238
- SKY_TIMEPICKER_VALUE_ACCESSOR,
4239
- SKY_TIMEPICKER_VALIDATOR
4240
- ], usesOnChanges: true, ngImport: i0__namespace });
4241
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerInputDirective, decorators: [{
4688
+ SkyTimepickerInputDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerInputDirective, deps: [{ token: i0__namespace.Renderer2 }, { token: i0__namespace.ElementRef }, { token: i3__namespace.SkyLibResourcesService }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Directive });
4689
+ SkyTimepickerInputDirective.ɵdir = i0__namespace.ɵɵ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__namespace });
4690
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerInputDirective, decorators: [{
4242
4691
  type: i0.Directive,
4243
4692
  args: [{
4244
4693
  selector: '[skyTimepickerInput]',
4245
- providers: [
4246
- SKY_TIMEPICKER_VALUE_ACCESSOR,
4247
- SKY_TIMEPICKER_VALIDATOR
4248
- ]
4694
+ providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR],
4249
4695
  }]
4250
4696
  }], ctorParameters: function () { return [{ type: i0__namespace.Renderer2 }, { type: i0__namespace.ElementRef }, { type: i3__namespace.SkyLibResourcesService }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { skyTimepickerInput: [{
4251
4697
  type: i0.Input
@@ -4327,10 +4773,10 @@
4327
4773
  if (this.is8601) {
4328
4774
  hourOffset = 0;
4329
4775
  }
4330
- hour = moment__default["default"]({ 'hour': setHour }).add(hourOffset, 'hours').hour();
4776
+ hour = moment__default["default"]({ hour: setHour }).add(hourOffset, 'hours').hour();
4331
4777
  this.activeTime = moment__default["default"]({
4332
- 'hour': hour,
4333
- 'minute': moment__default["default"](this.activeTime).get('minute') + 0
4778
+ hour: hour,
4779
+ minute: moment__default["default"](this.activeTime).get('minute') + 0,
4334
4780
  }).toDate();
4335
4781
  this.selectedTimeChanged.emit(this.selectedTime);
4336
4782
  },
@@ -4362,8 +4808,8 @@
4362
4808
  },
4363
4809
  set: function (minute) {
4364
4810
  this.activeTime = moment__default["default"]({
4365
- 'hour': moment__default["default"](this.activeTime).get('hour') + 0,
4366
- 'minute': minute
4811
+ hour: moment__default["default"](this.activeTime).get('hour') + 0,
4812
+ minute: minute,
4367
4813
  }).toDate();
4368
4814
  this.selectedTimeChanged.emit(this.selectedTime);
4369
4815
  },
@@ -4379,8 +4825,9 @@
4379
4825
  timezone: parseInt(moment__default["default"](this.activeTime).format('Z'), 10),
4380
4826
  iso8601: this.activeTime,
4381
4827
  local: moment__default["default"](this.activeTime).format(this.localeFormat),
4382
- customFormat: (typeof this.returnFormat !== 'undefined')
4383
- ? this.returnFormat : this.localeFormat
4828
+ customFormat: typeof this.returnFormat !== 'undefined'
4829
+ ? this.returnFormat
4830
+ : this.localeFormat,
4384
4831
  };
4385
4832
  return time;
4386
4833
  },
@@ -4426,7 +4873,7 @@
4426
4873
  if (this.inputBoxHostService) {
4427
4874
  this.inputBoxHostService.populate({
4428
4875
  inputTemplate: this.inputTemplateRef,
4429
- buttonsTemplate: this.triggerButtonTemplateRef
4876
+ buttonsTemplate: this.triggerButtonTemplateRef,
4430
4877
  });
4431
4878
  }
4432
4879
  };
@@ -4458,8 +4905,7 @@
4458
4905
  }
4459
4906
  var data;
4460
4907
  data = {
4461
- 'hours': Array.apply(undefined, Array(h))
4462
- .map(function (x, i) {
4908
+ hours: Array.apply(undefined, Array(h)).map(function (x, i) {
4463
4909
  if (format === 'hh') {
4464
4910
  return ++i;
4465
4911
  }
@@ -4471,12 +4917,11 @@
4471
4917
  /* sanity check */
4472
4918
  return 0;
4473
4919
  }),
4474
- 'minutes': Array.apply(undefined, Array(m))
4475
- .map(function (x, i) {
4920
+ minutes: Array.apply(undefined, Array(m)).map(function (x, i) {
4476
4921
  return i * minuteMultiplier;
4477
4922
  }),
4478
- 'localeFormat': localeFormat,
4479
- 'minuteMultiplier': minuteMultiplier
4923
+ localeFormat: localeFormat,
4924
+ minuteMultiplier: minuteMultiplier,
4480
4925
  };
4481
4926
  this.hours = data.hours;
4482
4927
  this.minutes = data.minutes;
@@ -4531,7 +4976,7 @@
4531
4976
  affixer.placementChange
4532
4977
  .pipe(operators.takeUntil(this.timepickerUnsubscribe))
4533
4978
  .subscribe(function (change) {
4534
- _this.isVisible = (change.placement !== null);
4979
+ _this.isVisible = change.placement !== null;
4535
4980
  _this.changeDetector.markForCheck();
4536
4981
  });
4537
4982
  affixer.affixTo(this.triggerButtonRef.nativeElement, {
@@ -4539,7 +4984,7 @@
4539
4984
  enableAutoFit: true,
4540
4985
  horizontalAlignment: 'right',
4541
4986
  isSticky: true,
4542
- placement: 'below'
4987
+ placement: 'below',
4543
4988
  });
4544
4989
  this.affixer = affixer;
4545
4990
  };
@@ -4554,7 +4999,7 @@
4554
4999
  var _this = this;
4555
5000
  var overlay = this.overlayService.create({
4556
5001
  enableClose: false,
4557
- enablePointerEvents: false
5002
+ enablePointerEvents: false,
4558
5003
  });
4559
5004
  overlay.backdropClick
4560
5005
  .pipe(operators.takeUntil(this.timepickerUnsubscribe))
@@ -4601,16 +5046,16 @@
4601
5046
  };
4602
5047
  return SkyTimepickerComponent;
4603
5048
  }());
4604
- SkyTimepickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerComponent, deps: [{ token: i1__namespace.SkyAffixService }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.SkyCoreAdapterService }, { token: i1__namespace.SkyOverlayService }, { token: i2__namespace$1.SkyInputBoxHostService, optional: true }, { token: i3__namespace$2.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
4605
- SkyTimepickerComponent.ɵcmp = i0__namespace.ɵɵ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: i0.ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: i0.TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: i0.ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }], ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3__namespace$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i3__namespace$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "skyLibResources": i3__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
4606
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerComponent, decorators: [{
5049
+ SkyTimepickerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerComponent, deps: [{ token: i1__namespace.SkyAffixService }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.SkyCoreAdapterService }, { token: i1__namespace.SkyOverlayService }, { token: i2__namespace$1.SkyInputBoxHostService, optional: true }, { token: i3__namespace$2.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
5050
+ SkyTimepickerComponent.ɵcmp = i0__namespace.ɵɵ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: i0.ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: i0.TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: i0.ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }], ngImport: i0__namespace, 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__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3__namespace$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "skyLibResources": i3__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
5051
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerComponent, decorators: [{
4607
5052
  type: i0.Component,
4608
5053
  args: [{
4609
5054
  selector: 'sky-timepicker',
4610
- 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",
5055
+ 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",
4611
5056
  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"],
4612
5057
  encapsulation: i0.ViewEncapsulation.None,
4613
- changeDetection: i0.ChangeDetectionStrategy.OnPush
5058
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4614
5059
  }]
4615
5060
  }], ctorParameters: function () {
4616
5061
  return [{ type: i1__namespace.SkyAffixService }, { type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace.SkyCoreAdapterService }, { type: i1__namespace.SkyOverlayService }, { type: i2__namespace$1.SkyInputBoxHostService, decorators: [{
@@ -4623,29 +5068,29 @@
4623
5068
  }], timepickerRef: [{
4624
5069
  type: i0.ViewChild,
4625
5070
  args: ['timepickerRef', {
4626
- read: i0.ElementRef
5071
+ read: i0.ElementRef,
4627
5072
  }]
4628
5073
  }], timepickerTemplateRef: [{
4629
5074
  type: i0.ViewChild,
4630
5075
  args: ['timepickerTemplateRef', {
4631
- read: i0.TemplateRef
5076
+ read: i0.TemplateRef,
4632
5077
  }]
4633
5078
  }], triggerButtonRef: [{
4634
5079
  type: i0.ViewChild,
4635
5080
  args: ['triggerButtonRef', {
4636
- read: i0.ElementRef
5081
+ read: i0.ElementRef,
4637
5082
  }]
4638
5083
  }], inputTemplateRef: [{
4639
5084
  type: i0.ViewChild,
4640
5085
  args: ['inputTemplateRef', {
4641
5086
  read: i0.TemplateRef,
4642
- static: true
5087
+ static: true,
4643
5088
  }]
4644
5089
  }], triggerButtonTemplateRef: [{
4645
5090
  type: i0.ViewChild,
4646
5091
  args: ['triggerButtonTemplateRef', {
4647
5092
  read: i0.TemplateRef,
4648
- static: true
5093
+ static: true,
4649
5094
  }]
4650
5095
  }] } });
4651
5096
 
@@ -4654,45 +5099,37 @@
4654
5099
  }
4655
5100
  return SkyTimepickerModule;
4656
5101
  }());
4657
- SkyTimepickerModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
4658
- SkyTimepickerModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective,
4659
- SkyTimepickerComponent], imports: [i3$1.CommonModule,
5102
+ SkyTimepickerModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
5103
+ SkyTimepickerModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent], imports: [i5.CommonModule,
4660
5104
  i3.SkyI18nModule,
4661
5105
  i2.SkyIconModule,
4662
5106
  SkyDatetimeResourcesModule,
4663
5107
  i1.SkyAffixModule,
4664
5108
  i1.SkyOverlayModule,
4665
- i3$2.SkyThemeModule], exports: [SkyTimepickerInputDirective,
4666
- SkyTimepickerComponent] });
4667
- SkyTimepickerModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerModule, imports: [[
4668
- i3$1.CommonModule,
5109
+ i3$2.SkyThemeModule], exports: [SkyTimepickerInputDirective, SkyTimepickerComponent] });
5110
+ SkyTimepickerModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerModule, imports: [[
5111
+ i5.CommonModule,
4669
5112
  i3.SkyI18nModule,
4670
5113
  i2.SkyIconModule,
4671
5114
  SkyDatetimeResourcesModule,
4672
5115
  i1.SkyAffixModule,
4673
5116
  i1.SkyOverlayModule,
4674
- i3$2.SkyThemeModule
5117
+ i3$2.SkyThemeModule,
4675
5118
  ]] });
4676
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: SkyTimepickerModule, decorators: [{
5119
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0__namespace, type: SkyTimepickerModule, decorators: [{
4677
5120
  type: i0.NgModule,
4678
5121
  args: [{
4679
- declarations: [
4680
- SkyTimepickerInputDirective,
4681
- SkyTimepickerComponent
4682
- ],
5122
+ declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent],
4683
5123
  imports: [
4684
- i3$1.CommonModule,
5124
+ i5.CommonModule,
4685
5125
  i3.SkyI18nModule,
4686
5126
  i2.SkyIconModule,
4687
5127
  SkyDatetimeResourcesModule,
4688
5128
  i1.SkyAffixModule,
4689
5129
  i1.SkyOverlayModule,
4690
- i3$2.SkyThemeModule
5130
+ i3$2.SkyThemeModule,
4691
5131
  ],
4692
- exports: [
4693
- SkyTimepickerInputDirective,
4694
- SkyTimepickerComponent
4695
- ]
5132
+ exports: [SkyTimepickerInputDirective, SkyTimepickerComponent],
4696
5133
  }]
4697
5134
  }] });
4698
5135