@skyux/datetime 5.9.4 → 6.0.0-beta.10
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.
- package/documentation.json +709 -790
- package/esm2020/index.mjs +31 -0
- package/esm2020/lib/modules/date-pipe/date-format-utility.mjs +46 -0
- package/esm2020/lib/modules/date-pipe/date-pipe.module.mjs +21 -0
- package/esm2020/lib/modules/date-pipe/date.pipe.mjs +65 -0
- package/esm2020/lib/modules/date-pipe/fuzzy-date.pipe.mjs +47 -0
- package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +437 -0
- package/esm2020/lib/modules/date-range-picker/date-range-picker.module.mjs +47 -0
- package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +97 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculation.mjs +2 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-config.mjs +2 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +2 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-id.mjs +118 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-type.mjs +23 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +2 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +53 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-default-calculator-config.mjs +2 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-default-calculator-configs.mjs +147 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range-relative-value.mjs +249 -0
- package/esm2020/lib/modules/date-range-picker/types/date-range.mjs +2 -0
- package/esm2020/lib/modules/datepicker/date-formatter.mjs +38 -0
- package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +33 -0
- package/esm2020/lib/modules/datepicker/datepicker-calendar-change.mjs +2 -0
- package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +310 -0
- package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +104 -0
- package/esm2020/lib/modules/datepicker/datepicker-config.service.mjs +21 -0
- package/esm2020/lib/modules/datepicker/datepicker-custom-date.mjs +2 -0
- package/esm2020/lib/modules/datepicker/datepicker-date.mjs +2 -0
- package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +464 -0
- package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +488 -0
- package/esm2020/lib/modules/datepicker/datepicker.component.mjs +328 -0
- package/esm2020/lib/modules/datepicker/datepicker.module.mjs +95 -0
- package/esm2020/lib/modules/datepicker/datepicker.service.mjs +21 -0
- package/esm2020/lib/modules/datepicker/daypicker-button.component.mjs +22 -0
- package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +126 -0
- package/esm2020/lib/modules/datepicker/daypicker.component.mjs +211 -0
- package/esm2020/lib/modules/datepicker/fuzzy-date.mjs +2 -0
- package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +402 -0
- package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +80 -0
- package/esm2020/lib/modules/datepicker/yearpicker.component.mjs +86 -0
- package/esm2020/lib/modules/shared/sky-datetime-resources.module.mjs +131 -0
- package/esm2020/lib/modules/timepicker/timepicker.component.mjs +361 -0
- package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +226 -0
- package/esm2020/lib/modules/timepicker/timepicker.interface.mjs +2 -0
- package/esm2020/lib/modules/timepicker/timepicker.module.mjs +46 -0
- package/esm2020/skyux-datetime.mjs +5 -0
- package/esm2020/testing/datepicker-fixture.mjs +53 -0
- package/esm2020/testing/public-api.mjs +3 -0
- package/esm2020/testing/skyux-datetime-testing.mjs +5 -0
- package/esm2020/testing/timepicker-fixture.mjs +50 -0
- package/fesm2015/{skyux-datetime-testing.js → skyux-datetime-testing.mjs} +1 -2
- package/fesm2015/skyux-datetime-testing.mjs.map +1 -0
- package/fesm2015/skyux-datetime.mjs +4752 -0
- package/fesm2015/skyux-datetime.mjs.map +1 -0
- package/{esm2015/testing/datepicker-fixture.js → fesm2020/skyux-datetime-testing.mjs} +57 -3
- package/fesm2020/skyux-datetime-testing.mjs.map +1 -0
- package/{fesm2015/skyux-datetime.js → fesm2020/skyux-datetime.mjs} +196 -218
- package/fesm2020/skyux-datetime.mjs.map +1 -0
- package/lib/modules/date-range-picker/date-range-picker.component.d.ts +2 -6
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +11 -0
- package/package.json +42 -18
- package/testing/package.json +5 -5
- package/bundles/skyux-datetime-testing.umd.js +0 -143
- package/bundles/skyux-datetime.umd.js +0 -5488
- package/esm2015/index.js +0 -31
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/date-pipe/date-format-utility.js +0 -46
- package/esm2015/lib/modules/date-pipe/date-format-utility.js.map +0 -1
- package/esm2015/lib/modules/date-pipe/date-pipe.module.js +0 -21
- package/esm2015/lib/modules/date-pipe/date-pipe.module.js.map +0 -1
- package/esm2015/lib/modules/date-pipe/date.pipe.js +0 -65
- package/esm2015/lib/modules/date-pipe/date.pipe.js.map +0 -1
- package/esm2015/lib/modules/date-pipe/fuzzy-date.pipe.js +0 -47
- package/esm2015/lib/modules/date-pipe/fuzzy-date.pipe.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/date-range-picker.component.js +0 -453
- package/esm2015/lib/modules/date-range-picker/date-range-picker.component.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/date-range-picker.module.js +0 -47
- package/esm2015/lib/modules/date-range-picker/date-range-picker.module.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/date-range.service.js +0 -97
- package/esm2015/lib/modules/date-range-picker/date-range.service.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculation.js +0 -2
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculation.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-config.js +0 -2
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-config.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.js +0 -2
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-id.js +0 -118
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-id.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-type.js +0 -23
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-type.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-validate-function.js +0 -2
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator-validate-function.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator.js +0 -56
- package/esm2015/lib/modules/date-range-picker/types/date-range-calculator.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-default-calculator-config.js +0 -2
- package/esm2015/lib/modules/date-range-picker/types/date-range-default-calculator-config.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-default-calculator-configs.js +0 -147
- package/esm2015/lib/modules/date-range-picker/types/date-range-default-calculator-configs.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range-relative-value.js +0 -249
- package/esm2015/lib/modules/date-range-picker/types/date-range-relative-value.js.map +0 -1
- package/esm2015/lib/modules/date-range-picker/types/date-range.js +0 -2
- package/esm2015/lib/modules/date-range-picker/types/date-range.js.map +0 -1
- package/esm2015/lib/modules/datepicker/date-formatter.js +0 -38
- package/esm2015/lib/modules/datepicker/date-formatter.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-adapter.service.js +0 -33
- package/esm2015/lib/modules/datepicker/datepicker-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-calendar-change.js +0 -2
- package/esm2015/lib/modules/datepicker/datepicker-calendar-change.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-calendar-inner.component.js +0 -315
- package/esm2015/lib/modules/datepicker/datepicker-calendar-inner.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-calendar.component.js +0 -109
- package/esm2015/lib/modules/datepicker/datepicker-calendar.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-config.service.js +0 -21
- package/esm2015/lib/modules/datepicker/datepicker-config.service.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-custom-date.js +0 -2
- package/esm2015/lib/modules/datepicker/datepicker-custom-date.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-date.js +0 -2
- package/esm2015/lib/modules/datepicker/datepicker-date.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-input-fuzzy.directive.js +0 -467
- package/esm2015/lib/modules/datepicker/datepicker-input-fuzzy.directive.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker-input.directive.js +0 -446
- package/esm2015/lib/modules/datepicker/datepicker-input.directive.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker.component.js +0 -333
- package/esm2015/lib/modules/datepicker/datepicker.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker.module.js +0 -95
- package/esm2015/lib/modules/datepicker/datepicker.module.js.map +0 -1
- package/esm2015/lib/modules/datepicker/datepicker.service.js +0 -21
- package/esm2015/lib/modules/datepicker/datepicker.service.js.map +0 -1
- package/esm2015/lib/modules/datepicker/daypicker-button.component.js +0 -26
- package/esm2015/lib/modules/datepicker/daypicker-button.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/daypicker-cell.component.js +0 -130
- package/esm2015/lib/modules/datepicker/daypicker-cell.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/daypicker.component.js +0 -215
- package/esm2015/lib/modules/datepicker/daypicker.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/fuzzy-date.js +0 -2
- package/esm2015/lib/modules/datepicker/fuzzy-date.js.map +0 -1
- package/esm2015/lib/modules/datepicker/fuzzy-date.service.js +0 -403
- package/esm2015/lib/modules/datepicker/fuzzy-date.service.js.map +0 -1
- package/esm2015/lib/modules/datepicker/monthpicker.component.js +0 -84
- package/esm2015/lib/modules/datepicker/monthpicker.component.js.map +0 -1
- package/esm2015/lib/modules/datepicker/yearpicker.component.js +0 -90
- package/esm2015/lib/modules/datepicker/yearpicker.component.js.map +0 -1
- package/esm2015/lib/modules/shared/sky-datetime-resources.module.js +0 -131
- package/esm2015/lib/modules/shared/sky-datetime-resources.module.js.map +0 -1
- package/esm2015/lib/modules/timepicker/timepicker.component.js +0 -367
- package/esm2015/lib/modules/timepicker/timepicker.component.js.map +0 -1
- package/esm2015/lib/modules/timepicker/timepicker.directive.js +0 -228
- package/esm2015/lib/modules/timepicker/timepicker.directive.js.map +0 -1
- package/esm2015/lib/modules/timepicker/timepicker.interface.js +0 -2
- package/esm2015/lib/modules/timepicker/timepicker.interface.js.map +0 -1
- package/esm2015/lib/modules/timepicker/timepicker.module.js +0 -46
- package/esm2015/lib/modules/timepicker/timepicker.module.js.map +0 -1
- package/esm2015/skyux-datetime.js +0 -5
- package/esm2015/skyux-datetime.js.map +0 -1
- package/esm2015/testing/datepicker-fixture.js.map +0 -1
- package/esm2015/testing/public-api.js +0 -3
- package/esm2015/testing/public-api.js.map +0 -1
- package/esm2015/testing/skyux-datetime-testing.js +0 -5
- package/esm2015/testing/skyux-datetime-testing.js.map +0 -1
- package/esm2015/testing/timepicker-fixture.js +0 -50
- package/esm2015/testing/timepicker-fixture.js.map +0 -1
- package/fesm2015/skyux-datetime-testing.js.map +0 -1
- package/fesm2015/skyux-datetime.js.map +0 -1
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { SkyDateFormatter } from './date-formatter';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
let nextDatepickerId = 0;
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export class SkyDatepickerCalendarInnerComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.selectedDateChange = new EventEmitter(undefined);
|
|
13
|
+
this.calendarModeChange = new EventEmitter();
|
|
14
|
+
this.minMode = 'day';
|
|
15
|
+
this.maxMode = 'year';
|
|
16
|
+
this.monthColLimit = 3;
|
|
17
|
+
this.yearColLimit = 5;
|
|
18
|
+
this.datepickerMode = 'day';
|
|
19
|
+
this.yearRange = 20;
|
|
20
|
+
this.formatDay = 'DD';
|
|
21
|
+
this.formatMonth = 'MMMM';
|
|
22
|
+
this.formatYear = 'YYYY';
|
|
23
|
+
this.formatDayHeader = 'dd';
|
|
24
|
+
this.formatDayTitle = 'MMMM YYYY';
|
|
25
|
+
this.formatMonthTitle = 'YYYY';
|
|
26
|
+
this.datepickerId = `sky-datepicker-${++nextDatepickerId}`;
|
|
27
|
+
this.stepDay = {};
|
|
28
|
+
this.stepMonth = {};
|
|
29
|
+
this.stepYear = {};
|
|
30
|
+
this.modes = ['day', 'month', 'year'];
|
|
31
|
+
this.dateFormatter = new SkyDateFormatter();
|
|
32
|
+
this.keys = {
|
|
33
|
+
13: 'enter',
|
|
34
|
+
32: 'space',
|
|
35
|
+
33: 'pageup',
|
|
36
|
+
34: 'pagedown',
|
|
37
|
+
35: 'end',
|
|
38
|
+
36: 'home',
|
|
39
|
+
37: 'left',
|
|
40
|
+
38: 'up',
|
|
41
|
+
39: 'right',
|
|
42
|
+
40: 'down',
|
|
43
|
+
};
|
|
44
|
+
this.ngUnsubscribe = new Subject();
|
|
45
|
+
}
|
|
46
|
+
set selectedDate(value) {
|
|
47
|
+
if (this.dateFormatter.dateIsValid(value)) {
|
|
48
|
+
this._selectedDate = value;
|
|
49
|
+
this.activeDate = value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
get selectedDate() {
|
|
53
|
+
return this._selectedDate;
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
if (this.selectedDate) {
|
|
57
|
+
this.activeDate = new Date(this.selectedDate);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.activeDate = new Date();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ngOnChanges(changes) {
|
|
64
|
+
this.refreshView();
|
|
65
|
+
}
|
|
66
|
+
ngOnDestroy() {
|
|
67
|
+
this.ngUnsubscribe.next();
|
|
68
|
+
this.ngUnsubscribe.complete();
|
|
69
|
+
}
|
|
70
|
+
setCompareHandler(handler, type) {
|
|
71
|
+
if (type === 'day') {
|
|
72
|
+
this.compareHandlerDay = handler;
|
|
73
|
+
}
|
|
74
|
+
if (type === 'month') {
|
|
75
|
+
this.compareHandlerMonth = handler;
|
|
76
|
+
}
|
|
77
|
+
if (type === 'year') {
|
|
78
|
+
this.compareHandlerYear = handler;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
compare(date1, date2) {
|
|
82
|
+
if (date1 === undefined || date2 === undefined) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
if (this.datepickerMode === 'day' && this.compareHandlerDay) {
|
|
86
|
+
return this.compareHandlerDay(date1, date2);
|
|
87
|
+
}
|
|
88
|
+
if (this.datepickerMode === 'month' && this.compareHandlerMonth) {
|
|
89
|
+
return this.compareHandlerMonth(date1, date2);
|
|
90
|
+
}
|
|
91
|
+
/* istanbul ignore else */
|
|
92
|
+
/* sanity check */
|
|
93
|
+
if (this.datepickerMode === 'year' && this.compareHandlerYear) {
|
|
94
|
+
return this.compareHandlerYear(date1, date2);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
setRefreshViewHandler(handler, type) {
|
|
98
|
+
if (type === 'day') {
|
|
99
|
+
this.refreshViewHandlerDay = handler;
|
|
100
|
+
}
|
|
101
|
+
if (type === 'month') {
|
|
102
|
+
this.refreshViewHandlerMonth = handler;
|
|
103
|
+
}
|
|
104
|
+
if (type === 'year') {
|
|
105
|
+
this.refreshViewHandlerYear = handler;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
refreshView() {
|
|
109
|
+
if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {
|
|
110
|
+
this.refreshViewHandlerDay();
|
|
111
|
+
}
|
|
112
|
+
if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {
|
|
113
|
+
this.refreshViewHandlerMonth();
|
|
114
|
+
}
|
|
115
|
+
if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {
|
|
116
|
+
this.refreshViewHandlerYear();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
setKeydownHandler(handler, type) {
|
|
120
|
+
if (type === 'day') {
|
|
121
|
+
this.handleKeydownDay = handler;
|
|
122
|
+
}
|
|
123
|
+
if (type === 'month') {
|
|
124
|
+
this.handleKeydownMonth = handler;
|
|
125
|
+
}
|
|
126
|
+
if (type === 'year') {
|
|
127
|
+
this.handleKeydownYear = handler;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
handleKeydown(key, event) {
|
|
131
|
+
if (this.datepickerMode === 'day' && this.handleKeydownDay) {
|
|
132
|
+
this.handleKeydownDay(key, event);
|
|
133
|
+
}
|
|
134
|
+
if (this.datepickerMode === 'month' && this.handleKeydownMonth) {
|
|
135
|
+
this.handleKeydownMonth(key, event);
|
|
136
|
+
}
|
|
137
|
+
if (this.datepickerMode === 'year' && this.handleKeydownYear) {
|
|
138
|
+
this.handleKeydownYear(key, event);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
dateFilter(date, format) {
|
|
142
|
+
return this.dateFormatter.format(date, format);
|
|
143
|
+
}
|
|
144
|
+
isActive(dateObject) {
|
|
145
|
+
if (this.compare(dateObject.date, this.activeDate) === 0) {
|
|
146
|
+
this.activeDateId = dateObject.uid;
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
onKeydown(event) {
|
|
152
|
+
const key = this.keys[event.which];
|
|
153
|
+
if (!key || event.shiftKey || event.altKey) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
event.preventDefault();
|
|
157
|
+
event.stopPropagation();
|
|
158
|
+
if (key === 'enter' || key === 'space') {
|
|
159
|
+
if (this.isDisabled(this.activeDate)) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this.select(this.activeDate);
|
|
163
|
+
}
|
|
164
|
+
else if (event.ctrlKey && (key === 'up' || key === 'down')) {
|
|
165
|
+
this.toggleMode(key === 'up' ? 1 : -1);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
this.handleKeydown(key, event);
|
|
169
|
+
this.refreshView();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
createDateObject(date, format, isSecondary, id) {
|
|
173
|
+
const customDateMatch = this.getCustomDate(date);
|
|
174
|
+
const dateObject = {
|
|
175
|
+
date: new Date(date.getFullYear(), date.getMonth(), date.getDate()),
|
|
176
|
+
label: this.dateFilter(date, format),
|
|
177
|
+
selected: this.compare(date, this.selectedDate) === 0,
|
|
178
|
+
disabled: this.isDisabled(date),
|
|
179
|
+
current: this.compare(date, new Date()) === 0,
|
|
180
|
+
secondary: isSecondary,
|
|
181
|
+
uid: id,
|
|
182
|
+
keyDate: customDateMatch ? customDateMatch.keyDate : undefined,
|
|
183
|
+
keyDateText: customDateMatch ? customDateMatch.keyDateText : [],
|
|
184
|
+
};
|
|
185
|
+
return dateObject;
|
|
186
|
+
}
|
|
187
|
+
createCalendarRows(dates, size) {
|
|
188
|
+
const rows = [];
|
|
189
|
+
while (dates.length > 0) {
|
|
190
|
+
rows.push(dates.splice(0, size));
|
|
191
|
+
}
|
|
192
|
+
return rows;
|
|
193
|
+
}
|
|
194
|
+
/*
|
|
195
|
+
This is ensures that no strangeness happens when converting a date to local time.
|
|
196
|
+
*/
|
|
197
|
+
fixTimeZone(date) {
|
|
198
|
+
const newDate = new Date(date);
|
|
199
|
+
newDate.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
|
|
200
|
+
return newDate;
|
|
201
|
+
}
|
|
202
|
+
selectCalendar(event, date, closePicker = false) {
|
|
203
|
+
if (!closePicker) {
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
event.stopPropagation();
|
|
206
|
+
}
|
|
207
|
+
this.select(date);
|
|
208
|
+
}
|
|
209
|
+
select(date, isManual = true) {
|
|
210
|
+
this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
211
|
+
/*
|
|
212
|
+
Only actually select date if in minmode (day picker mode).
|
|
213
|
+
Otherwise, just change the active view for the datepicker.
|
|
214
|
+
*/
|
|
215
|
+
if (this.datepickerMode === this.minMode) {
|
|
216
|
+
this.selectedDate = new Date(this.activeDate);
|
|
217
|
+
if (isManual) {
|
|
218
|
+
this.selectedDateChange.emit(this.selectedDate);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
this.datepickerMode =
|
|
223
|
+
this.modes[this.modes.indexOf(this.datepickerMode) - 1];
|
|
224
|
+
this.calendarModeChange.emit(this.datepickerMode);
|
|
225
|
+
}
|
|
226
|
+
this.refreshView();
|
|
227
|
+
}
|
|
228
|
+
moveCalendar(event, direction) {
|
|
229
|
+
event.preventDefault();
|
|
230
|
+
event.stopPropagation();
|
|
231
|
+
this.move(direction);
|
|
232
|
+
}
|
|
233
|
+
move(direction) {
|
|
234
|
+
let expectedStep;
|
|
235
|
+
if (this.datepickerMode === 'day') {
|
|
236
|
+
expectedStep = this.stepDay;
|
|
237
|
+
}
|
|
238
|
+
if (this.datepickerMode === 'month') {
|
|
239
|
+
expectedStep = this.stepMonth;
|
|
240
|
+
}
|
|
241
|
+
if (this.datepickerMode === 'year') {
|
|
242
|
+
expectedStep = this.stepYear;
|
|
243
|
+
}
|
|
244
|
+
/* istanbul ignore else */
|
|
245
|
+
/* sanity check */
|
|
246
|
+
if (expectedStep) {
|
|
247
|
+
const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);
|
|
248
|
+
const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);
|
|
249
|
+
this.activeDate = new Date(year, month, 1);
|
|
250
|
+
this.refreshView();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
toggleModeCalendar(event) {
|
|
254
|
+
event.preventDefault();
|
|
255
|
+
event.stopPropagation();
|
|
256
|
+
this.toggleMode(1);
|
|
257
|
+
}
|
|
258
|
+
toggleMode(direction) {
|
|
259
|
+
/*istanbul ignore next */
|
|
260
|
+
direction = direction || 1;
|
|
261
|
+
/* istanbul ignore else */
|
|
262
|
+
/* sanity check */
|
|
263
|
+
if (!(direction === 1 && this.datepickerMode === this.maxMode) &&
|
|
264
|
+
!(this.datepickerMode === this.minMode && direction === -1)) {
|
|
265
|
+
this.datepickerMode =
|
|
266
|
+
this.modes[this.modes.indexOf(this.datepickerMode) + direction];
|
|
267
|
+
this.calendarModeChange.emit(this.datepickerMode);
|
|
268
|
+
this.refreshView();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Date is disabled if it meets any of these criteria:
|
|
273
|
+
* 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.
|
|
274
|
+
* 2. Date is marked as disabled in the customDates array.
|
|
275
|
+
*/
|
|
276
|
+
isDisabled(date) {
|
|
277
|
+
const customDate = this.getCustomDate(date);
|
|
278
|
+
return ((this.minDate && this.compare(date, this.minDate) < 0) ||
|
|
279
|
+
(this.maxDate && this.compare(date, this.maxDate) > 0) ||
|
|
280
|
+
(customDate && customDate.disabled));
|
|
281
|
+
}
|
|
282
|
+
getCustomDate(date) {
|
|
283
|
+
if (this.customDates) {
|
|
284
|
+
return this.customDates.find((customDate) => {
|
|
285
|
+
return customDate.date.getTime() === date.getTime();
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
SkyDatepickerCalendarInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
+
SkyDatepickerCalendarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: { customDates: "customDates", startingDay: "startingDay", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-datepicker-calendar-inner{border-radius:5px;background-color:#fff;border-top:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;border-right:1px solid #e2e3e4}.sky-datepicker-calendar-inner .sky-btn-default{border-color:transparent;border:2px solid #ffffff}.sky-datepicker-calendar-inner .sky-btn-default:hover{border-color:#eeeeef}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:#c1e8fb;border:2px solid #00b4f1}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:none}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:#686c73}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-chevron-modern{display:none}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-theme-modern .sky-datepicker-calendar-inner{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px;padding:5px 10px}.sky-theme-modern .sky-datepicker-calendar-inner:focus-within{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default{border:none;box-shadow:inset 0 0 0 1px transparent;padding:5px 7px}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-active,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-btn-sm.sky-datepicker-btn-date{height:30px;min-width:0;padding:0;width:30px}.sky-theme-modern .sky-datepicker-chevron-default{display:none}.sky-theme-modern .sky-datepicker-chevron-modern{display:inline;font-size:16px}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner:not(:focus-within){border:none;box-shadow:inset 0 0 0 1px #686c73}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner .sky-datepicker-btn-selected{background-color:#009cd1}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{
|
|
293
|
+
type: Component,
|
|
294
|
+
args: [{ selector: 'sky-datepicker-inner', encapsulation: ViewEncapsulation.None, 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"] }]
|
|
295
|
+
}], propDecorators: { customDates: [{
|
|
296
|
+
type: Input
|
|
297
|
+
}], startingDay: [{
|
|
298
|
+
type: Input
|
|
299
|
+
}], minDate: [{
|
|
300
|
+
type: Input
|
|
301
|
+
}], maxDate: [{
|
|
302
|
+
type: Input
|
|
303
|
+
}], selectedDate: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], selectedDateChange: [{
|
|
306
|
+
type: Output
|
|
307
|
+
}], calendarModeChange: [{
|
|
308
|
+
type: Output
|
|
309
|
+
}] } });
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFPcEQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFFekI7O0dBRUc7QUFPSCxNQUFNLE9BQU8sbUNBQW1DO0lBTmhEO1FBa0NTLHVCQUFrQixHQUF1QixJQUFJLFlBQVksQ0FDOUQsU0FBUyxDQUNWLENBQUM7UUFHSyx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUt0RSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxNQUFNLENBQUM7UUFDakIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxNQUFNLENBQUM7UUFDckIsZUFB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TyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7Z0lBcllVLG1DQUFtQztvSEFBbkMsbUNBQW1DLDRUQ2hDaEQsMEpBT0E7MkZEeUJhLG1DQUFtQztrQkFOL0MsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7OEJBTTlCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBYUMsa0JBQWtCO3NCQUR4QixNQUFNO2dCQU1BLGtCQUFrQjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZUZvcm1hdHRlciB9IGZyb20gJy4vZGF0ZS1mb3JtYXR0ZXInO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckRhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbnR5cGUgRGF0ZUNvbXBhcmF0b3IgPSAoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKSA9PiBudW1iZXIgfCB1bmRlZmluZWQ7XG50eXBlIEtleWJvYXJkRXZlbnRIYW5kbGVyID0gKGtleTogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcblxubGV0IG5leHREYXRlcGlja2VySWQgPSAwO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZXBpY2tlci1pbm5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgcHVibGljIGN1c3RvbURhdGVzOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydGluZ0RheTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWREYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuZGF0ZUZvcm1hdHRlci5kYXRlSXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBhY3RpdmVEYXRlOiBEYXRlO1xuICBwdWJsaWMgYWN0aXZlRGF0ZUlkOiBzdHJpbmc7XG5cbiAgcHVibGljIG1pbk1vZGUgPSAnZGF5JztcbiAgcHVibGljIG1heE1vZGUgPSAneWVhcic7XG4gIHB1YmxpYyBtb250aENvbExpbWl0ID0gMztcbiAgcHVibGljIHllYXJDb2xMaW1pdCA9IDU7XG4gIHB1YmxpYyBkYXRlcGlja2VyTW9kZSA9ICdkYXknO1xuICBwdWJsaWMgeWVhclJhbmdlID0gMjA7XG5cbiAgcHVibGljIGZvcm1hdERheSA9ICdERCc7XG4gIHB1YmxpYyBmb3JtYXRNb250aCA9ICdNTU1NJztcbiAgcHVibGljIGZvcm1hdFllYXIgPSAnWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXREYXlIZWFkZXIgPSAnZGQnO1xuICBwdWJsaWMgZm9ybWF0RGF5VGl0bGUgPSAnTU1NTSBZWVlZJztcbiAgcHVibGljIGZvcm1hdE1vbnRoVGl0bGUgPSAnWVlZWSc7XG5cbiAgcHVibGljIGRhdGVwaWNrZXJJZCA9IGBza3ktZGF0ZXBpY2tlci0keysrbmV4dERhdGVwaWNrZXJJZH1gO1xuXG4gIHB1YmxpYyBzdGVwRGF5OiBhbnkgPSB7fTtcbiAgcHVibGljIHN0ZXBNb250aDogYW55ID0ge307XG4gIHB1YmxpYyBzdGVwWWVhcjogYW55ID0ge307XG5cbiAgcHJvdGVjdGVkIG1vZGVzOiBzdHJpbmdbXSA9IFsnZGF5JywgJ21vbnRoJywgJ3llYXInXTtcbiAgcHJvdGVjdGVkIGRhdGVGb3JtYXR0ZXI6IFNreURhdGVGb3JtYXR0ZXIgPSBuZXcgU2t5RGF0ZUZvcm1hdHRlcigpO1xuXG4gIHB1YmxpYyByZWZyZXNoVmlld0hhbmRsZXJEYXk6ICgpID0+IHZvaWQ7XG4gIHB1YmxpYyBjb21wYXJlSGFuZGxlckRheTogRGF0ZUNvbXBhcmF0b3I7XG4gIHB1YmxpYyByZWZyZXNoVmlld0hhbmRsZXJNb250aDogKCkgPT4gdm9pZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyTW9udGg6IERhdGVDb21wYXJhdG9yO1xuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyWWVhcjogKCkgPT4gdm9pZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyWWVhcjogRGF0ZUNvbXBhcmF0b3I7XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd25EYXk6IEtleWJvYXJkRXZlbnRIYW5kbGVyO1xuICBwdWJsaWMgaGFuZGxlS2V5ZG93bk1vbnRoOiBLZXlib2FyZEV2ZW50SGFuZGxlcjtcbiAgcHVibGljIGhhbmRsZUtleWRvd25ZZWFyOiBLZXlib2FyZEV2ZW50SGFuZGxlcjtcblxuICBwdWJsaWMga2V5czogYW55ID0ge1xuICAgIDEzOiAnZW50ZXInLFxuICAgIDMyOiAnc3BhY2UnLFxuICAgIDMzOiAncGFnZXVwJyxcbiAgICAzNDogJ3BhZ2Vkb3duJyxcbiAgICAzNTogJ2VuZCcsXG4gICAgMzY6ICdob21lJyxcbiAgICAzNzogJ2xlZnQnLFxuICAgIDM4OiAndXAnLFxuICAgIDM5OiAncmlnaHQnLFxuICAgIDQwOiAnZG93bicsXG4gIH07XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcGFyZUhhbmRsZXIoaGFuZGxlcjogRGF0ZUNvbXBhcmF0b3IsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlclllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJlKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IHVuZGVmaW5lZCB8IG51bWJlciB7XG4gICAgaWYgKGRhdGUxID09PSB1bmRlZmluZWQgfHwgZGF0ZTIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScgJiYgdGhpcy5jb21wYXJlSGFuZGxlckRheSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUhhbmRsZXJEYXkoZGF0ZTEsIGRhdGUyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLmNvbXBhcmVIYW5kbGVyTW9udGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVIYW5kbGVyTW9udGgoZGF0ZTEsIGRhdGUyKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAneWVhcicgJiYgdGhpcy5jb21wYXJlSGFuZGxlclllYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVIYW5kbGVyWWVhcihkYXRlMSwgZGF0ZTIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWZyZXNoVmlld0hhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2hWaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSkge1xuICAgICAgdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJEYXkoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRLZXlkb3duSGFuZGxlcihoYW5kbGVyOiBLZXlib2FyZEV2ZW50SGFuZGxlciwgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25EYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknICYmIHRoaXMuaGFuZGxlS2V5ZG93bkRheSkge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRGF5KGtleSwgZXZlbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMuaGFuZGxlS2V5ZG93bk1vbnRoKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aChrZXksIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMuaGFuZGxlS2V5ZG93blllYXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93blllYXIoa2V5LCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRhdGVGaWx0ZXIoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXR0ZXIuZm9ybWF0KGRhdGUsIGZvcm1hdCk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmUoZGF0ZU9iamVjdDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29tcGFyZShkYXRlT2JqZWN0LmRhdGUsIHRoaXMuYWN0aXZlRGF0ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZUlkID0gZGF0ZU9iamVjdC51aWQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5rZXlzW2V2ZW50LndoaWNoXTtcblxuICAgIGlmICgha2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoa2V5ID09PSAnZW50ZXInIHx8IGtleSA9PT0gJ3NwYWNlJykge1xuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh0aGlzLmFjdGl2ZURhdGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5ICYmIChrZXkgPT09ICd1cCcgfHwga2V5ID09PSAnZG93bicpKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGUoa2V5ID09PSAndXAnID8gMSA6IC0xKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGtleSwgZXZlbnQpO1xuICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXRlT2JqZWN0KFxuICAgIGRhdGU6IERhdGUsXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICAgaXNTZWNvbmRhcnk6IGJvb2xlYW4sXG4gICAgaWQ6IHN0cmluZ1xuICApOiBTa3lEYXRlcGlja2VyRGF0ZSB7XG4gICAgY29uc3QgY3VzdG9tRGF0ZU1hdGNoID0gdGhpcy5nZXRDdXN0b21EYXRlKGRhdGUpO1xuXG4gICAgY29uc3QgZGF0ZU9iamVjdDogU2t5RGF0ZXBpY2tlckRhdGUgPSB7XG4gICAgICBkYXRlOiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgbGFiZWw6IHRoaXMuZGF0ZUZpbHRlcihkYXRlLCBmb3JtYXQpLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuY29tcGFyZShkYXRlLCB0aGlzLnNlbGVjdGVkRGF0ZSkgPT09IDAsXG4gICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkKGRhdGUpLFxuICAgICAgY3VycmVudDogdGhpcy5jb21wYXJlKGRhdGUsIG5ldyBEYXRlKCkpID09PSAwLFxuICAgICAgc2Vjb25kYXJ5OiBpc1NlY29uZGFyeSxcbiAgICAgIHVpZDogaWQsXG4gICAgICBrZXlEYXRlOiBjdXN0b21EYXRlTWF0Y2ggPyBjdXN0b21EYXRlTWF0Y2gua2V5RGF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGtleURhdGVUZXh0OiBjdXN0b21EYXRlTWF0Y2ggPyBjdXN0b21EYXRlTWF0Y2gua2V5RGF0ZVRleHQgOiBbXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRhdGVPYmplY3Q7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ2FsZW5kYXJSb3dzKFxuICAgIGRhdGVzOiBBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4sXG4gICAgc2l6ZTogbnVtYmVyXG4gICk6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj4ge1xuICAgIGNvbnN0IHJvd3M6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj4gPSBbXTtcbiAgICB3aGlsZSAoZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgcm93cy5wdXNoKGRhdGVzLnNwbGljZSgwLCBzaXplKSk7XG4gICAgfVxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgLypcbiAgICBUaGlzIGlzIGVuc3VyZXMgdGhhdCBubyBzdHJhbmdlbmVzcyBoYXBwZW5zIHdoZW4gY29udmVydGluZyBhIGRhdGUgdG8gbG9jYWwgdGltZS5cbiAgKi9cbiAgcHVibGljIGZpeFRpbWVab25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgcmV0dXJuIG5ld0RhdGU7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0Q2FsZW5kYXIoXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIGRhdGU6IERhdGUsXG4gICAgY2xvc2VQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICBpZiAoIWNsb3NlUGlja2VyKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0KGRhdGUpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdChkYXRlOiBEYXRlLCBpc01hbnVhbDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKTtcblxuICAgIC8qXG4gICAgICAgIE9ubHkgYWN0dWFsbHkgc2VsZWN0IGRhdGUgaWYgaW4gbWlubW9kZSAoZGF5IHBpY2tlciBtb2RlKS5cbiAgICAgICAgT3RoZXJ3aXNlLCBqdXN0IGNoYW5nZSB0aGUgYWN0aXZlIHZpZXcgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJNb2RlID1cbiAgICAgICAgdGhpcy5tb2Rlc1t0aGlzLm1vZGVzLmluZGV4T2YodGhpcy5kYXRlcGlja2VyTW9kZSkgLSAxXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG1vdmVDYWxlbmRhcihldmVudDogRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm1vdmUoZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGV4cGVjdGVkU3RlcDogYW55O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5Jykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwRGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBZZWFyO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKGV4cGVjdGVkU3RlcCkge1xuICAgICAgY29uc3QgeWVhciA9XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgZGlyZWN0aW9uICogKGV4cGVjdGVkU3RlcC55ZWFycyB8fCAwKTtcbiAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyBkaXJlY3Rpb24gKiAoZXhwZWN0ZWRTdGVwLm1vbnRocyB8fCAwKTtcblxuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1vZGVDYWxlbmRhcihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlTW9kZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb2RlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAxO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoXG4gICAgICAhKGRpcmVjdGlvbiA9PT0gMSAmJiB0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1heE1vZGUpICYmXG4gICAgICAhKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSAmJiBkaXJlY3Rpb24gPT09IC0xKVxuICAgICkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyTW9kZSA9XG4gICAgICAgIHRoaXMubW9kZXNbdGhpcy5tb2Rlcy5pbmRleE9mKHRoaXMuZGF0ZXBpY2tlck1vZGUpICsgZGlyZWN0aW9uXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERhdGUgaXMgZGlzYWJsZWQgaWYgaXQgbWVldHMgYW55IG9mIHRoZXNlIGNyaXRlcmlhOlxuICAgKiAxLiBEYXRlIGZhbGxzIG91dHNpZGUgdGhlIG1pbiBvciBtYXggZGF0ZXMgc2V0IGJ5IHRoZSBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZS5cbiAgICogMi4gRGF0ZSBpcyBtYXJrZWQgYXMgZGlzYWJsZWQgaW4gdGhlIGN1c3RvbURhdGVzIGFycmF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1c3RvbURhdGUgPSB0aGlzLmdldEN1c3RvbURhdGUoZGF0ZSk7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLm1pbkRhdGUgJiYgdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMubWluRGF0ZSkgPCAwKSB8fFxuICAgICAgKHRoaXMubWF4RGF0ZSAmJiB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5tYXhEYXRlKSA+IDApIHx8XG4gICAgICAoY3VzdG9tRGF0ZSAmJiBjdXN0b21EYXRlLmRpc2FibGVkKVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRDdXN0b21EYXRlKGRhdGU6IERhdGUpOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbURhdGVzLmZpbmQoKGN1c3RvbURhdGU6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImRhdGVwaWNrZXJNb2RlXCJcbiAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lclwiXG4gIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { SkyDateFormatter } from './date-formatter';
|
|
3
|
+
import { SkyDatepickerAdapterService } from './datepicker-adapter.service';
|
|
4
|
+
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
|
5
|
+
import { SkyDatepickerConfigService } from './datepicker-config.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./datepicker-adapter.service";
|
|
8
|
+
import * as i2 from "./datepicker-config.service";
|
|
9
|
+
import * as i3 from "./datepicker-calendar-inner.component";
|
|
10
|
+
import * as i4 from "./daypicker.component";
|
|
11
|
+
import * as i5 from "./monthpicker.component";
|
|
12
|
+
import * as i6 from "./yearpicker.component";
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export class SkyDatepickerCalendarComponent {
|
|
17
|
+
constructor(adapter, config, elementRef) {
|
|
18
|
+
this.adapter = adapter;
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.elementRef = elementRef;
|
|
21
|
+
this.calendarDateRangeChange = new EventEmitter();
|
|
22
|
+
this.calendarModeChange = new EventEmitter();
|
|
23
|
+
this.selectedDateChange = new EventEmitter(undefined);
|
|
24
|
+
this._now = new Date();
|
|
25
|
+
this.formatter = new SkyDateFormatter();
|
|
26
|
+
this.configureOptions();
|
|
27
|
+
}
|
|
28
|
+
/** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */
|
|
29
|
+
set startingDay(start) {
|
|
30
|
+
this._startingDay = start;
|
|
31
|
+
}
|
|
32
|
+
get startingDay() {
|
|
33
|
+
return this._startingDay || 0;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
* Indicates if the calendar element's visibility property is 'visible'.
|
|
38
|
+
*/
|
|
39
|
+
get isVisible() {
|
|
40
|
+
return this.adapter.elementIsVisible();
|
|
41
|
+
}
|
|
42
|
+
ngAfterViewInit() {
|
|
43
|
+
this.adapter.init(this.elementRef);
|
|
44
|
+
}
|
|
45
|
+
configureOptions() {
|
|
46
|
+
Object.assign(this, this.config);
|
|
47
|
+
}
|
|
48
|
+
onCalendarDateRangeChange(event) {
|
|
49
|
+
this.calendarDateRangeChange.next(event);
|
|
50
|
+
}
|
|
51
|
+
onCalendarModeChange(event) {
|
|
52
|
+
this.calendarModeChange.emit(event);
|
|
53
|
+
}
|
|
54
|
+
onSelectedDateChange(event) {
|
|
55
|
+
this.selectedDateChange.emit(event);
|
|
56
|
+
}
|
|
57
|
+
writeValue(value) {
|
|
58
|
+
if (value !== undefined &&
|
|
59
|
+
this.formatter.dateIsValid(value) &&
|
|
60
|
+
this.selectedDate !== undefined &&
|
|
61
|
+
this._datepicker.compareHandlerDay(value, this.selectedDate) === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (this.formatter.dateIsValid(value)) {
|
|
65
|
+
this.selectedDate = value;
|
|
66
|
+
this._datepicker.select(value, false);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.selectedDate = new Date();
|
|
70
|
+
this._datepicker.select(new Date(), false);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
SkyDatepickerCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: i1.SkyDatepickerAdapterService }, { token: i2.SkyDatepickerConfigService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
SkyDatepickerCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: { customDates: "customDates", isDaypickerWaiting: "isDaypickerWaiting", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate", startingDay: "startingDay" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange", calendarModeChange: "calendarModeChange", selectedDateChange: "selectedDateChange" }, providers: [SkyDatepickerAdapterService], viewQueries: [{ propertyName: "_datepicker", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [customDates]=\"customDates\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectedDate]=\"selectedDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange($event)\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n <sky-daypicker\n tabindex=\"0\"\n [customDates]=\"customDates\"\n [isWaiting]=\"isDaypickerWaiting\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n ></sky-daypicker>\n <sky-monthpicker tabindex=\"0\"></sky-monthpicker>\n <sky-yearpicker tabindex=\"0\"></sky-yearpicker>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"], components: [{ type: i3.SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: ["customDates", "startingDay", "minDate", "maxDate", "selectedDate"], outputs: ["selectedDateChange", "calendarModeChange"] }, { type: i4.SkyDayPickerComponent, selector: "sky-daypicker", inputs: ["customDates", "isWaiting"], outputs: ["calendarDateRangeChange"] }, { type: i5.SkyMonthPickerComponent, selector: "sky-monthpicker" }, { type: i6.SkyYearPickerComponent, selector: "sky-yearpicker" }] });
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{ selector: 'sky-datepicker-calendar', providers: [SkyDatepickerAdapterService], 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"] }]
|
|
79
|
+
}], ctorParameters: function () { return [{ type: i1.SkyDatepickerAdapterService }, { type: i2.SkyDatepickerConfigService }, { type: i0.ElementRef }]; }, propDecorators: { customDates: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], isDaypickerWaiting: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], minDate: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], maxDate: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], selectedDate: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], startingDay: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], calendarDateRangeChange: [{
|
|
92
|
+
type: Output
|
|
93
|
+
}], calendarModeChange: [{
|
|
94
|
+
type: Output
|
|
95
|
+
}], selectedDateChange: [{
|
|
96
|
+
type: Output
|
|
97
|
+
}], _datepicker: [{
|
|
98
|
+
type: ViewChild,
|
|
99
|
+
args: [SkyDatepickerCalendarInnerComponent, {
|
|
100
|
+
read: SkyDatepickerCalendarInnerComponent,
|
|
101
|
+
static: true,
|
|
102
|
+
}]
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBR3pFOztHQUVHO0FBT0gsTUFBTSxPQUFPLDhCQUE4QjtJQTBEekMsWUFDVSxPQUFvQyxFQUNwQyxNQUFrQyxFQUNsQyxVQUFzQjtRQUZ0QixZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBakN6Qiw0QkFBdUIsR0FBOEMsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFHckgsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHdEUsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxDQUM5RCxTQUFTLENBQ1YsQ0FBQztRQWdCUSxT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d0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2RhdGVwaWNrZXItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWN1c3RvbS1kYXRlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRhdGVwaWNrZXItY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5RGF0ZXBpY2tlckFkYXB0ZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNEYXlwaWNrZXJXYWl0aW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlO1xuXG4gIC8qKiBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlO1xuXG4gIC8qKiBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgZnJvbSAwLTYgKDA9U3VuZGF5LCAuLi4sIDY9U2F0dXJkYXkpICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RhcnRpbmdEYXkoc3RhcnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXJ0aW5nRGF5ID0gc3RhcnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nRGF5KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydGluZ0RheSB8fCAwO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVSYW5nZUNoYW5nZTogRXZlbnRFbWl0dGVyPFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyTW9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPihcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCdzIHZpc2liaWxpdHkgcHJvcGVydHkgaXMgJ3Zpc2libGUnLlxuICAgKi9cbiAgcHVibGljIGdldCBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5lbGVtZW50SXNWaXNpYmxlKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50LCB7XG4gICAgcmVhZDogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgX2RhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuXG4gIHByb3RlY3RlZCBfbm93OiBEYXRlID0gbmV3IERhdGUoKTtcblxuICBwcml2YXRlIGZvcm1hdHRlciA9IG5ldyBTa3lEYXRlRm9ybWF0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfc3RhcnRpbmdEYXk6IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZGFwdGVyOiBTa3lEYXRlcGlja2VyQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWc6IFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgICB0aGlzLmNvbmZpZ3VyZU9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVyLmluaXQodGhpcy5lbGVtZW50UmVmKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVPcHRpb25zKCk6IHZvaWQge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgdGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoZXZlbnQ6IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhck1vZGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKGV2ZW50OiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuZm9ybWF0dGVyLmRhdGVJc1ZhbGlkKHZhbHVlKSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fZGF0ZXBpY2tlci5jb21wYXJlSGFuZGxlckRheSh2YWx1ZSwgdGhpcy5zZWxlY3RlZERhdGUpID09PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWF0dGVyLmRhdGVJc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXIuc2VsZWN0KHZhbHVlLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXIuc2VsZWN0KG5ldyBEYXRlKCksIGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhclwiPlxuICA8c2t5LWRhdGVwaWNrZXItaW5uZXJcbiAgICBbY3VzdG9tRGF0ZXNdPVwiY3VzdG9tRGF0ZXNcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlXCJcbiAgICBbc3RhcnRpbmdEYXldPVwic3RhcnRpbmdEYXlcIlxuICAgIChjYWxlbmRhck1vZGVDaGFuZ2UpPVwib25DYWxlbmRhck1vZGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJvblNlbGVjdGVkRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxza3ktZGF5cGlja2VyXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgW2N1c3RvbURhdGVzXT1cImN1c3RvbURhdGVzXCJcbiAgICAgIFtpc1dhaXRpbmddPVwiaXNEYXlwaWNrZXJXYWl0aW5nXCJcbiAgICAgIChjYWxlbmRhckRhdGVSYW5nZUNoYW5nZSk9XCJvbkNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlKCRldmVudClcIlxuICAgID48L3NreS1kYXlwaWNrZXI+XG4gICAgPHNreS1tb250aHBpY2tlciB0YWJpbmRleD1cIjBcIj48L3NreS1tb250aHBpY2tlcj5cbiAgICA8c2t5LXllYXJwaWNrZXIgdGFiaW5kZXg9XCIwXCI+PC9za3kteWVhcnBpY2tlcj5cbiAgPC9za3ktZGF0ZXBpY2tlci1pbm5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SkyDatepickerConfigService {
|
|
4
|
+
constructor() {
|
|
5
|
+
/**
|
|
6
|
+
* Specifies the starting day of the week in the calendar,
|
|
7
|
+
* where `0` sets the starting day to Sunday.
|
|
8
|
+
* @default 0
|
|
9
|
+
*/
|
|
10
|
+
this.startingDay = 0;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
SkyDatepickerConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
+
SkyDatepickerConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerConfigService, providedIn: 'root' });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerConfigService, decorators: [{
|
|
16
|
+
type: Injectable,
|
|
17
|
+
args: [{
|
|
18
|
+
providedIn: 'root',
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTywwQkFBMEI7SUFIdkM7UUFvQkU7Ozs7V0FJRztRQUNJLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO0tBQ3hCOzt1SEF2QlksMEJBQTBCOzJIQUExQiwwQkFBMEIsY0FGekIsTUFBTTsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2Uge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBkYXRlIGZvcm1hdCBmb3IgdGhlIGlucHV0LlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBsYXRlc3Qgc2VsZWN0YWJsZSBkYXRlIHRoYXQgaXMgYXZhaWxhYmxlIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGVhcmxpZXN0IHNlbGVjdGFibGUgZGF0ZSB0aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgbWluRGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLFxuICAgKiB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5IHRvIFN1bmRheS5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcHVibGljIHN0YXJ0aW5nRGF5ID0gMDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jdXN0b20tZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWN1c3RvbS1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZvciBhIGN1c3RvbSBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNreURhdGVwaWNrZXJDdXN0b21EYXRlIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRlIHRvIGN1c3RvbWl6ZS5cbiAgICovXG4gIGRhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGUuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBrZXkgZGF0ZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBrZXlEYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheXMgYSBwb3B1cCBvZiB0aGUgcHJvdmlkZWQgdGV4dCB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIGtleSBkYXRlIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIGtleURhdGVUZXh0PzogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1kYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXItZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lEYXRlcGlja2VyRGF0ZSB7XG4gIGRhdGU6IERhdGU7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgY3VycmVudDogYm9vbGVhbjtcbiAgc2Vjb25kYXJ5OiBib29sZWFuO1xuICB1aWQ6IHN0cmluZztcbiAga2V5RGF0ZT86IGJvb2xlYW47XG4gIGtleURhdGVUZXh0PzogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
|