@ardium-ui/ui 3.4.4 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_internal/disablable-component.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +2 -2
- package/esm2022/lib/calendar/calendar.component.mjs +437 -0
- package/esm2022/lib/calendar/calendar.defaults.mjs +26 -0
- package/esm2022/lib/calendar/calendar.internal-types.mjs +2 -0
- package/esm2022/lib/calendar/calendar.module.mjs +24 -0
- package/esm2022/lib/calendar/calendar.types.mjs +6 -0
- package/esm2022/lib/calendar/index.mjs +5 -0
- package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +282 -0
- package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +65 -0
- package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +245 -0
- package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +22 -0
- package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +244 -0
- package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +14 -0
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +357 -0
- package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +38 -0
- package/esm2022/lib/inputs/date-input/date-input.directive.mjs +59 -0
- package/esm2022/lib/inputs/date-input/date-input.module.mjs +50 -0
- package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +49 -0
- package/esm2022/lib/inputs/date-input/date-input.types.mjs +5 -0
- package/esm2022/lib/inputs/date-input/index.mjs +6 -0
- package/esm2022/public-api.mjs +3 -2
- package/fesm2022/ardium-ui-ui.mjs +1878 -52
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/disablable-component.d.ts +1 -1
- package/lib/calendar/calendar.component.d.ts +94 -0
- package/lib/calendar/calendar.defaults.d.ts +18 -0
- package/lib/calendar/calendar.internal-types.d.ts +4 -0
- package/lib/calendar/calendar.module.d.ts +14 -0
- package/lib/calendar/calendar.types.d.ts +83 -0
- package/lib/calendar/index.d.ts +4 -0
- package/lib/calendar/views/days-view/days-view.component.d.ts +68 -0
- package/lib/calendar/views/days-view/days-view.helpers.d.ts +20 -0
- package/lib/calendar/views/months-view/months-view.component.d.ts +61 -0
- package/lib/calendar/views/months-view/months-view.helpers.d.ts +3 -0
- package/lib/calendar/views/years-view/years-view.component.d.ts +59 -0
- package/lib/calendar/views/years-view/years-view.helpers.d.ts +3 -0
- package/lib/inputs/date-input/date-input.component.d.ts +95 -0
- package/lib/inputs/date-input/date-input.defaults.d.ts +30 -0
- package/lib/inputs/date-input/date-input.directive.d.ts +33 -0
- package/lib/inputs/date-input/date-input.module.d.ts +14 -0
- package/lib/inputs/date-input/date-input.serializers.d.ts +3 -0
- package/lib/inputs/date-input/date-input.types.d.ts +16 -0
- package/lib/inputs/date-input/index.d.ts +5 -0
- package/package.json +1 -1
- package/prebuilt-themes/default/calendar-OLD.css +294 -0
- package/prebuilt-themes/default/calendar-OLD.css.map +1 -0
- package/prebuilt-themes/default/calendar.css +100 -80
- package/prebuilt-themes/default/calendar.css.map +1 -1
- package/prebuilt-themes/default/inputs/date-input.css +68 -0
- package/prebuilt-themes/default/inputs/date-input.css.map +1 -0
- package/public-api.d.ts +2 -0
- package/themes/default/calendar-OLD.scss +183 -0
- package/themes/default/calendar.scss +120 -98
- package/themes/default/inputs/date-input.scss +32 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, HostListener, input, output, viewChild, } from '@angular/core';
|
|
2
|
+
import { isNull } from 'simple-bool';
|
|
3
|
+
import { isYearOutOfRange } from '../years-view/years-view.helpers';
|
|
4
|
+
import { getCalendarMonthsArray } from './months-view.helpers';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "../../../buttons/icon-button/icon-button.component";
|
|
8
|
+
import * as i3 from "../../../icon/icon.component";
|
|
9
|
+
import * as i4 from "../../../buttons/button/button.component";
|
|
10
|
+
const TODAY = new Date();
|
|
11
|
+
export class MonthsViewComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.tabIndex = input.required();
|
|
14
|
+
this.readOnly = input.required();
|
|
15
|
+
this.disabled = input.required();
|
|
16
|
+
this.autoFocus = input.required();
|
|
17
|
+
this._isUsingKeyboard = input.required();
|
|
18
|
+
this.color = input.required();
|
|
19
|
+
this.activeYear = input.required();
|
|
20
|
+
this.activeMonth = input.required();
|
|
21
|
+
this.selectedDate = input.required();
|
|
22
|
+
this.min = input.required();
|
|
23
|
+
this.max = input.required();
|
|
24
|
+
this.monthsArray = computed(() => getCalendarMonthsArray(this.activeYear(), this.min(), this.max()));
|
|
25
|
+
this.currentAriaLabel = computed(() => {
|
|
26
|
+
const month = this.highlightedMonth();
|
|
27
|
+
if (month === null) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
return new Date(this.activeYear(), month, 1).toLocaleDateString(undefined, {
|
|
31
|
+
year: 'numeric',
|
|
32
|
+
month: 'long',
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//! outputs
|
|
36
|
+
this.triggerOpenYearsView = output();
|
|
37
|
+
this.triggerOpenDaysView = output();
|
|
38
|
+
this.focusEvent = output({ alias: 'focus' });
|
|
39
|
+
this.blurEvent = output({ alias: 'blur' });
|
|
40
|
+
this.triggerSelectMonth = output();
|
|
41
|
+
this.triggeChangeYear = output();
|
|
42
|
+
this.triggerHighlightMonth = output();
|
|
43
|
+
this.triggerHighlightNextMonth = output();
|
|
44
|
+
this.triggerHighlightPreviousMonth = output();
|
|
45
|
+
this.triggerHighlightFirstMonth = output();
|
|
46
|
+
this.triggerHighlightLastMonth = output();
|
|
47
|
+
this.triggerHighlightSameMonthPreviousPage = output();
|
|
48
|
+
this.triggerHighlightSameMonthNextPage = output();
|
|
49
|
+
//! calendar entry hover & click
|
|
50
|
+
this.highlightedMonth = input.required();
|
|
51
|
+
//! focusing
|
|
52
|
+
this.focusableElement = viewChild.required('focusableElement');
|
|
53
|
+
//! templates
|
|
54
|
+
this.monthsViewHeaderTemplate = input.required();
|
|
55
|
+
this.monthTemplate = input.required();
|
|
56
|
+
//! template contexts
|
|
57
|
+
this.monthsViewHeaderContext = computed(() => ({
|
|
58
|
+
nextPage: () => {
|
|
59
|
+
this.triggeChangeYear.emit(this.activeYear() + 1);
|
|
60
|
+
},
|
|
61
|
+
prevPage: () => {
|
|
62
|
+
this.triggeChangeYear.emit(this.activeYear() - 1);
|
|
63
|
+
},
|
|
64
|
+
openYearsView: () => {
|
|
65
|
+
this.triggerOpenYearsView.emit();
|
|
66
|
+
},
|
|
67
|
+
openDaysView: () => {
|
|
68
|
+
this.triggerOpenDaysView.emit();
|
|
69
|
+
},
|
|
70
|
+
canGoToNextPage: !this.isYearOutOfRange(this.activeYear() + 1),
|
|
71
|
+
canGoToPreviousPage: !this.isYearOutOfRange(this.activeYear() - 1),
|
|
72
|
+
year: this.activeYear(),
|
|
73
|
+
date: new Date(this.activeYear(), 0, 1),
|
|
74
|
+
$implicit: this.activeYear(),
|
|
75
|
+
}));
|
|
76
|
+
this.monthContext = computed(() => (month) => {
|
|
77
|
+
const date = new Date(this.activeYear(), month, 1);
|
|
78
|
+
return {
|
|
79
|
+
month,
|
|
80
|
+
date,
|
|
81
|
+
$implicit: date,
|
|
82
|
+
select: (month) => {
|
|
83
|
+
if (month instanceof Date)
|
|
84
|
+
month = month.getMonth();
|
|
85
|
+
this.triggerSelectMonth.emit(month);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
onMouseMove() {
|
|
91
|
+
if (this._isUsingKeyboard())
|
|
92
|
+
return;
|
|
93
|
+
if (this.highlightedMonth())
|
|
94
|
+
this.triggerHighlightMonth.emit(null);
|
|
95
|
+
}
|
|
96
|
+
ngAfterViewInit() {
|
|
97
|
+
if (!this.autoFocus())
|
|
98
|
+
return;
|
|
99
|
+
this.focus();
|
|
100
|
+
this.triggerHighlightMonth.emit(0);
|
|
101
|
+
}
|
|
102
|
+
onCalendarMonthMouseover(month) {
|
|
103
|
+
if (this._isUsingKeyboard())
|
|
104
|
+
return;
|
|
105
|
+
if (this.disabled() || this.readOnly())
|
|
106
|
+
return;
|
|
107
|
+
this.triggerHighlightMonth.emit(month);
|
|
108
|
+
}
|
|
109
|
+
onCalendarMonthClick(month) {
|
|
110
|
+
if (this.disabled() || this.readOnly())
|
|
111
|
+
return;
|
|
112
|
+
this.triggerSelectMonth.emit(month);
|
|
113
|
+
}
|
|
114
|
+
onMonthGridFocus() {
|
|
115
|
+
if (this.disabled() || this.readOnly())
|
|
116
|
+
return;
|
|
117
|
+
this.triggerHighlightMonth.emit(0);
|
|
118
|
+
}
|
|
119
|
+
onMonthGridBlur() {
|
|
120
|
+
if (this.disabled() || this.readOnly())
|
|
121
|
+
return;
|
|
122
|
+
this.triggerHighlightMonth.emit(null);
|
|
123
|
+
}
|
|
124
|
+
onMonthGridClick() {
|
|
125
|
+
if (this.disabled() || this.readOnly())
|
|
126
|
+
return;
|
|
127
|
+
if (this.highlightedMonth() !== null)
|
|
128
|
+
return;
|
|
129
|
+
this.triggerHighlightMonth.emit(0);
|
|
130
|
+
}
|
|
131
|
+
focus() {
|
|
132
|
+
this.focusableElement().nativeElement.focus();
|
|
133
|
+
}
|
|
134
|
+
//! keyboard controls
|
|
135
|
+
onMainGridKeydown(event) {
|
|
136
|
+
if (this.disabled() || this.readOnly())
|
|
137
|
+
return;
|
|
138
|
+
switch (event.code) {
|
|
139
|
+
case 'Space':
|
|
140
|
+
case 'Enter':
|
|
141
|
+
this._onEnterPress(event);
|
|
142
|
+
break;
|
|
143
|
+
case 'ArrowUp':
|
|
144
|
+
this._onArrowUpPress(event);
|
|
145
|
+
break;
|
|
146
|
+
case 'ArrowDown':
|
|
147
|
+
this._onArrowDownPress(event);
|
|
148
|
+
break;
|
|
149
|
+
case 'ArrowLeft':
|
|
150
|
+
this._onArrowLeftPress(event);
|
|
151
|
+
break;
|
|
152
|
+
case 'ArrowRight':
|
|
153
|
+
this._onArrowRightPress(event);
|
|
154
|
+
break;
|
|
155
|
+
case 'Home':
|
|
156
|
+
this._onHomePress(event);
|
|
157
|
+
break;
|
|
158
|
+
case 'End':
|
|
159
|
+
this._onEndPress(event);
|
|
160
|
+
break;
|
|
161
|
+
case 'PageUp':
|
|
162
|
+
this._onPageUpPress(event);
|
|
163
|
+
break;
|
|
164
|
+
case 'PageDown':
|
|
165
|
+
this._onPageDownPress(event);
|
|
166
|
+
break;
|
|
167
|
+
default:
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//select currently selected entry
|
|
172
|
+
_onEnterPress(event) {
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
const month = this.highlightedMonth();
|
|
175
|
+
if (isNull(month))
|
|
176
|
+
return;
|
|
177
|
+
this.triggerSelectMonth.emit(month);
|
|
178
|
+
}
|
|
179
|
+
//highlight the entry one line below
|
|
180
|
+
_onArrowDownPress(event) {
|
|
181
|
+
event.preventDefault();
|
|
182
|
+
this.triggerHighlightNextMonth.emit(4); //4 months per line
|
|
183
|
+
}
|
|
184
|
+
//highlight the entry one line above
|
|
185
|
+
_onArrowUpPress(event) {
|
|
186
|
+
event.preventDefault();
|
|
187
|
+
this.triggerHighlightPreviousMonth.emit(4); //4 months per line
|
|
188
|
+
}
|
|
189
|
+
//highlight next entry
|
|
190
|
+
_onArrowRightPress(event) {
|
|
191
|
+
event.preventDefault();
|
|
192
|
+
this.triggerHighlightNextMonth.emit(1);
|
|
193
|
+
}
|
|
194
|
+
//highlight previous entry
|
|
195
|
+
_onArrowLeftPress(event) {
|
|
196
|
+
event.preventDefault();
|
|
197
|
+
this.triggerHighlightPreviousMonth.emit(1);
|
|
198
|
+
}
|
|
199
|
+
//highlight first entry on the page
|
|
200
|
+
_onHomePress(event) {
|
|
201
|
+
event.preventDefault();
|
|
202
|
+
this.triggerHighlightFirstMonth.emit();
|
|
203
|
+
}
|
|
204
|
+
//highlight last entry on the page
|
|
205
|
+
_onEndPress(event) {
|
|
206
|
+
event.preventDefault();
|
|
207
|
+
this.triggerHighlightLastMonth.emit();
|
|
208
|
+
}
|
|
209
|
+
//alone: highlight same entry on the next page
|
|
210
|
+
//with alt: highlight same entry multiple pages after (10 pages)
|
|
211
|
+
_onPageDownPress(event) {
|
|
212
|
+
event.preventDefault();
|
|
213
|
+
this.triggerHighlightSameMonthNextPage.emit(event.altKey);
|
|
214
|
+
}
|
|
215
|
+
//alone: highlight same entry on the previous page
|
|
216
|
+
//with alt: highlight same entry multiple pages before (10 pages)
|
|
217
|
+
_onPageUpPress(event) {
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
this.triggerHighlightSameMonthPreviousPage.emit(event.altKey);
|
|
220
|
+
}
|
|
221
|
+
//! helpers
|
|
222
|
+
isMonthToday(month) {
|
|
223
|
+
return this.activeYear() === TODAY.getFullYear() && month === TODAY.getMonth();
|
|
224
|
+
}
|
|
225
|
+
isMonthSelected(month) {
|
|
226
|
+
if (month instanceof Date)
|
|
227
|
+
month = month.getMonth();
|
|
228
|
+
return (this.selectedDate() !== null &&
|
|
229
|
+
this.activeYear() === this.selectedDate()?.getFullYear() &&
|
|
230
|
+
month === this.selectedDate()?.getMonth());
|
|
231
|
+
}
|
|
232
|
+
isYearOutOfRange(year) {
|
|
233
|
+
return isYearOutOfRange(year, this.min(), this.max());
|
|
234
|
+
}
|
|
235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonthsViewComponent, selector: "ard-months-view", inputs: { tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: true, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: true, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: true, transformFunction: null }, _isUsingKeyboard: { classPropertyName: "_isUsingKeyboard", publicName: "_isUsingKeyboard", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: true, transformFunction: null }, activeYear: { classPropertyName: "activeYear", publicName: "activeYear", isSignal: true, isRequired: true, transformFunction: null }, activeMonth: { classPropertyName: "activeMonth", publicName: "activeMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: true, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: true, transformFunction: null }, highlightedMonth: { classPropertyName: "highlightedMonth", publicName: "highlightedMonth", isSignal: true, isRequired: true, transformFunction: null }, monthsViewHeaderTemplate: { classPropertyName: "monthsViewHeaderTemplate", publicName: "monthsViewHeaderTemplate", isSignal: true, isRequired: true, transformFunction: null }, monthTemplate: { classPropertyName: "monthTemplate", publicName: "monthTemplate", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { triggerOpenYearsView: "triggerOpenYearsView", triggerOpenDaysView: "triggerOpenDaysView", focusEvent: "focus", blurEvent: "blur", triggerSelectMonth: "triggerSelectMonth", triggeChangeYear: "triggeChangeYear", triggerHighlightMonth: "triggerHighlightMonth", triggerHighlightNextMonth: "triggerHighlightNextMonth", triggerHighlightPreviousMonth: "triggerHighlightPreviousMonth", triggerHighlightFirstMonth: "triggerHighlightFirstMonth", triggerHighlightLastMonth: "triggerHighlightLastMonth", triggerHighlightSameMonthPreviousPage: "triggerHighlightSameMonthPreviousPage", triggerHighlightSameMonthNextPage: "triggerHighlightSameMonthNextPage" }, host: { listeners: { "mousemove": "onMouseMove()" } }, viewQueries: [{ propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ard-months-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultMonthsViewHeaderTemplate\r\n let-year\r\n let-nextPage=\"nextPage\"\r\n let-prevPage=\"prevPage\"\r\n let-canGoToNextPage=\"canGoToNextPage\"\r\n let-canGoToPreviousPage=\"canGoToPreviousPage\"\r\n let-openDaysView=\"openDaysView\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n [color]=\"color()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openDaysView()\"\r\n >\r\n {{ year }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar-arrows\">\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousPage\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextPage\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthsViewHeaderTemplate() || defaultMonthsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"monthsViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__simple-grid\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onMonthGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onMonthGridBlur()\"\r\n (click)=\"onMonthGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @for (month of monthsArray(); track $index) {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedMonth() === month.value\"\r\n [class.ard-calendar__entry-disabled]=\"month.disabled\"\r\n [class.ard-calendar__entry-selected]=\"isMonthSelected(month.value)\"\r\n [class.ard-calendar-today]=\"isMonthToday(month.value)\"\r\n (click)=\"onCalendarMonthClick(month.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarMonthMouseover(month.value)\"\r\n role=\"gridcell\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"ard-calendar__entry-button\"\r\n tabindex=\"-1\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultMonthTemplate\r\n let-month\r\n >\r\n {{ month | date : 'MMM' | uppercase }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthTemplate() || defaultMonthTemplate\"\r\n [ngTemplateOutletContext]=\"monthContext()(month.value)\"\r\n />\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact"] }, { kind: "component", type: i3.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "component", type: i4.ArdiumButtonComponent, selector: "ard-button", inputs: ["icon", "variant", "alignIcon", "vertical"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
237
|
+
}
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthsViewComponent, decorators: [{
|
|
239
|
+
type: Component,
|
|
240
|
+
args: [{ selector: 'ard-months-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ard-months-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultMonthsViewHeaderTemplate\r\n let-year\r\n let-nextPage=\"nextPage\"\r\n let-prevPage=\"prevPage\"\r\n let-canGoToNextPage=\"canGoToNextPage\"\r\n let-canGoToPreviousPage=\"canGoToPreviousPage\"\r\n let-openDaysView=\"openDaysView\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n [color]=\"color()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openDaysView()\"\r\n >\r\n {{ year }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar-arrows\">\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousPage\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextPage\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthsViewHeaderTemplate() || defaultMonthsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"monthsViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__simple-grid\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onMonthGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onMonthGridBlur()\"\r\n (click)=\"onMonthGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @for (month of monthsArray(); track $index) {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedMonth() === month.value\"\r\n [class.ard-calendar__entry-disabled]=\"month.disabled\"\r\n [class.ard-calendar__entry-selected]=\"isMonthSelected(month.value)\"\r\n [class.ard-calendar-today]=\"isMonthToday(month.value)\"\r\n (click)=\"onCalendarMonthClick(month.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarMonthMouseover(month.value)\"\r\n role=\"gridcell\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"ard-calendar__entry-button\"\r\n tabindex=\"-1\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultMonthTemplate\r\n let-month\r\n >\r\n {{ month | date : 'MMM' | uppercase }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthTemplate() || defaultMonthTemplate\"\r\n [ngTemplateOutletContext]=\"monthContext()(month.value)\"\r\n />\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n" }]
|
|
241
|
+
}], propDecorators: { onMouseMove: [{
|
|
242
|
+
type: HostListener,
|
|
243
|
+
args: ['mousemove']
|
|
244
|
+
}] } });
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhzLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jYWxlbmRhci92aWV3cy9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL3ZpZXdzL21vbnRocy12aWV3L21vbnRocy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFFUixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRS9ELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFRekIsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9XLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUNyQyxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBRXJDLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFFdEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBYzdDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO1FBRXpDLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDdEMsZ0JBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFdkMsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFlLENBQUM7UUFFN0MsUUFBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWUsQ0FBQztRQUNwQyxRQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZSxDQUFDO1FBRXBDLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRyxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFO2dCQUN6RSxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsV0FBVztRQUNGLHlCQUFvQixHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFHLE1BQU0sRUFBUSxDQUFDO1FBRXJDLGVBQVUsR0FBRyxNQUFNLENBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwRCxjQUFTLEdBQUcsTUFBTSxDQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFbEQsdUJBQWtCLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFDdEMscUJBQWdCLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFFcEMsMEJBQXFCLEdBQUcsTUFBTSxFQUFpQixDQUFDO1FBQ2hELDhCQUF5QixHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQzdDLGtDQUE2QixHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQ2pELCtCQUEwQixHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQzVDLDhCQUF5QixHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQzNDLDBDQUFxQyxHQUFHLE1BQU0sRUFBVyxDQUFDO1FBQzFELHNDQUFpQyxHQUFHLE1BQU0sRUFBVyxDQUFDO1FBRS9ELGdDQUFnQztRQUN2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBNEI1RCxZQUFZO1FBQ0gscUJBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBMEIsa0JBQWtCLENBQUMsQ0FBQztRQThHNUYsYUFBYTtRQUNKLDZCQUF3QixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQTRELENBQUM7UUFDdEcsa0JBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpRCxDQUFDO1FBRXpGLHFCQUFxQjtRQUNaLDRCQUF1QixHQUFHLFFBQVEsQ0FDekMsR0FBb0MsRUFBRSxDQUFDLENBQUM7WUFDdEMsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLENBQUM7WUFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsQ0FBQztZQUNELGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlELG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkIsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzdCLENBQUMsQ0FDSCxDQUFDO1FBRU8saUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFhLEVBQXdCLEVBQUU7WUFDN0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRCxPQUFPO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixTQUFTLEVBQUUsSUFBSTtnQkFDZixNQUFNLEVBQUUsQ0FBQyxLQUFvQixFQUFFLEVBQUU7b0JBQy9CLElBQUksS0FBSyxZQUFZLElBQUk7d0JBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztLQUNKO0lBdk9DLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUFFLE9BQU87UUFDcEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPO1FBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQThDRCx3QkFBd0IsQ0FBQyxLQUFhO1FBQ3BDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQUUsT0FBTztRQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUUvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQy9DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUMvQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUtELEtBQUs7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUMvQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxXQUFXO2dCQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBRVI7Z0JBQ0UsT0FBTztRQUNYLENBQUM7SUFDSCxDQUFDO0lBQ0QsaUNBQWlDO0lBQ3pCLGFBQWEsQ0FBQyxLQUFvQjtRQUN4QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxvQ0FBb0M7SUFDNUIsaUJBQWlCLENBQUMsS0FBb0I7UUFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDN0QsQ0FBQztJQUNELG9DQUFvQztJQUM1QixlQUFlLENBQUMsS0FBb0I7UUFDMUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDakUsQ0FBQztJQUNELHNCQUFzQjtJQUNkLGtCQUFrQixDQUFDLEtBQW9CO1FBQzdDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCwwQkFBMEI7SUFDbEIsaUJBQWlCLENBQUMsS0FBb0I7UUFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELG1DQUFtQztJQUMzQixZQUFZLENBQUMsS0FBb0I7UUFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0Qsa0NBQWtDO0lBQzFCLFdBQVcsQ0FBQyxLQUFvQjtRQUN0QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCw4Q0FBOEM7SUFDOUMsZ0VBQWdFO0lBQ3hELGdCQUFnQixDQUFDLEtBQW9CO1FBQzNDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0Qsa0RBQWtEO0lBQ2xELGlFQUFpRTtJQUN6RCxjQUFjLENBQUMsS0FBb0I7UUFDekMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXO0lBQ1gsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakYsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLEtBQUssWUFBWSxJQUFJO1lBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwRCxPQUFPLENBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUk7WUFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUU7WUFDeEQsS0FBSyxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FDMUMsQ0FBQztJQUNKLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDOytHQXhNVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix1dkZDMUJoQyx1K0dBc0dBOzs0RkQ1RWEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQVkvQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5wdXQsXHJcbiAgb3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIHZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoQ29udGV4dCwgQ2FsZW5kYXJNb250aHNWaWV3SGVhZGVyQ29udGV4dCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnR5cGVzJztcclxuaW1wb3J0IHsgaXNZZWFyT3V0T2ZSYW5nZSB9IGZyb20gJy4uL3llYXJzLXZpZXcveWVhcnMtdmlldy5oZWxwZXJzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLy4uLy4uLy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XHJcbmltcG9ydCB7IGdldENhbGVuZGFyTW9udGhzQXJyYXkgfSBmcm9tICcuL21vbnRocy12aWV3LmhlbHBlcnMnO1xyXG5cclxuY29uc3QgVE9EQVkgPSBuZXcgRGF0ZSgpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtbW9udGhzLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb250aHMtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL21vbnRocy12aWV3LmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vbnRoc1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICByZWFkb25seSB0YWJJbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICByZWFkb25seSByZWFkT25seSA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICByZWFkb25seSBhdXRvRm9jdXMgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICByZWFkb25seSBfaXNVc2luZ0tleWJvYXJkID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJylcclxuICBvbk1vdXNlTW92ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc1VzaW5nS2V5Ym9hcmQoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRNb250aCgpKSB0aGlzLnRyaWdnZXJIaWdobGlnaHRNb250aC5lbWl0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9Gb2N1cygpKSByZXR1cm47XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRNb250aC5lbWl0KDApO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dC5yZXF1aXJlZDxDb21wb25lbnRDb2xvcj4oKTtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aXZlWWVhciA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICByZWFkb25seSBhY3RpdmVNb250aCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWREYXRlID0gaW5wdXQucmVxdWlyZWQ8RGF0ZSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IG1pbiA9IGlucHV0LnJlcXVpcmVkPERhdGUgfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0LnJlcXVpcmVkPERhdGUgfCBudWxsPigpO1xyXG5cclxuICByZWFkb25seSBtb250aHNBcnJheSA9IGNvbXB1dGVkKCgpID0+IGdldENhbGVuZGFyTW9udGhzQXJyYXkodGhpcy5hY3RpdmVZZWFyKCksIHRoaXMubWluKCksIHRoaXMubWF4KCkpKTtcclxuXHJcbiAgcmVhZG9ubHkgY3VycmVudEFyaWFMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5oaWdobGlnaHRlZE1vbnRoKCk7XHJcbiAgICBpZiAobW9udGggPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuYWN0aXZlWWVhcigpLCBtb250aCwgMSkudG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgIG1vbnRoOiAnbG9uZycsXHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgLy8hIG91dHB1dHNcclxuICByZWFkb25seSB0cmlnZ2VyT3BlblllYXJzVmlldyA9IG91dHB1dDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJPcGVuRGF5c1ZpZXcgPSBvdXRwdXQ8dm9pZD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgZm9jdXNFdmVudCA9IG91dHB1dDxGb2N1c0V2ZW50Pih7IGFsaWFzOiAnZm9jdXMnIH0pO1xyXG4gIHJlYWRvbmx5IGJsdXJFdmVudCA9IG91dHB1dDxGb2N1c0V2ZW50Pih7IGFsaWFzOiAnYmx1cicgfSk7XHJcblxyXG4gIHJlYWRvbmx5IHRyaWdnZXJTZWxlY3RNb250aCA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlQ2hhbmdlWWVhciA9IG91dHB1dDxudW1iZXI+KCk7XHJcblxyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRNb250aCA9IG91dHB1dDxudW1iZXIgfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHROZXh0TW9udGggPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRQcmV2aW91c01vbnRoID0gb3V0cHV0PG51bWJlcj4oKTtcclxuICByZWFkb25seSB0cmlnZ2VySGlnaGxpZ2h0Rmlyc3RNb250aCA9IG91dHB1dDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRMYXN0TW9udGggPSBvdXRwdXQ8dm9pZD4oKTtcclxuICByZWFkb25seSB0cmlnZ2VySGlnaGxpZ2h0U2FtZU1vbnRoUHJldmlvdXNQYWdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckhpZ2hsaWdodFNhbWVNb250aE5leHRQYWdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcblxyXG4gIC8vISBjYWxlbmRhciBlbnRyeSBob3ZlciAmIGNsaWNrXHJcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRNb250aCA9IGlucHV0LnJlcXVpcmVkPG51bWJlciB8IG51bGw+KCk7XHJcblxyXG4gIG9uQ2FsZW5kYXJNb250aE1vdXNlb3Zlcihtb250aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNVc2luZ0tleWJvYXJkKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0TW9udGguZW1pdChtb250aCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyTW9udGhDbGljayhtb250aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMucmVhZE9ubHkoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy50cmlnZ2VyU2VsZWN0TW9udGguZW1pdChtb250aCk7XHJcbiAgfVxyXG5cclxuICBvbk1vbnRoR3JpZEZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLnJlYWRPbmx5KCkpIHJldHVybjtcclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodE1vbnRoLmVtaXQoMCk7XHJcbiAgfVxyXG4gIG9uTW9udGhHcmlkQmx1cigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRNb250aC5lbWl0KG51bGwpO1xyXG4gIH1cclxuICBvbk1vbnRoR3JpZENsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLnJlYWRPbmx5KCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkTW9udGgoKSAhPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0TW9udGguZW1pdCgwKTtcclxuICB9XHJcblxyXG4gIC8vISBmb2N1c2luZ1xyXG4gIHJlYWRvbmx5IGZvY3VzYWJsZUVsZW1lbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdmb2N1c2FibGVFbGVtZW50Jyk7XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1c2FibGVFbGVtZW50KCkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGtleWJvYXJkIGNvbnRyb2xzXHJcbiAgb25NYWluR3JpZEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnU3BhY2UnOlxyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgdGhpcy5fb25FbnRlclByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgICAgdGhpcy5fb25BcnJvd1VwUHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgIHRoaXMuX29uQXJyb3dEb3duUHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxyXG4gICAgICAgIHRoaXMuX29uQXJyb3dMZWZ0UHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcclxuICAgICAgICB0aGlzLl9vbkFycm93UmlnaHRQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0hvbWUnOlxyXG4gICAgICAgIHRoaXMuX29uSG9tZVByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnRW5kJzpcclxuICAgICAgICB0aGlzLl9vbkVuZFByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUGFnZVVwJzpcclxuICAgICAgICB0aGlzLl9vblBhZ2VVcFByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUGFnZURvd24nOlxyXG4gICAgICAgIHRoaXMuX29uUGFnZURvd25QcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbiAgLy9zZWxlY3QgY3VycmVudGx5IHNlbGVjdGVkIGVudHJ5XHJcbiAgcHJpdmF0ZSBfb25FbnRlclByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5oaWdobGlnaHRlZE1vbnRoKCk7XHJcbiAgICBpZiAoaXNOdWxsKG1vbnRoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy50cmlnZ2VyU2VsZWN0TW9udGguZW1pdChtb250aCk7XHJcbiAgfVxyXG4gIC8vaGlnaGxpZ2h0IHRoZSBlbnRyeSBvbmUgbGluZSBiZWxvd1xyXG4gIHByaXZhdGUgX29uQXJyb3dEb3duUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHROZXh0TW9udGguZW1pdCg0KTsgLy80IG1vbnRocyBwZXIgbGluZVxyXG4gIH1cclxuICAvL2hpZ2hsaWdodCB0aGUgZW50cnkgb25lIGxpbmUgYWJvdmVcclxuICBwcml2YXRlIF9vbkFycm93VXBQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodFByZXZpb3VzTW9udGguZW1pdCg0KTsgLy80IG1vbnRocyBwZXIgbGluZVxyXG4gIH1cclxuICAvL2hpZ2hsaWdodCBuZXh0IGVudHJ5XHJcbiAgcHJpdmF0ZSBfb25BcnJvd1JpZ2h0UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHROZXh0TW9udGguZW1pdCgxKTtcclxuICB9XHJcbiAgLy9oaWdobGlnaHQgcHJldmlvdXMgZW50cnlcclxuICBwcml2YXRlIF9vbkFycm93TGVmdFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0UHJldmlvdXNNb250aC5lbWl0KDEpO1xyXG4gIH1cclxuICAvL2hpZ2hsaWdodCBmaXJzdCBlbnRyeSBvbiB0aGUgcGFnZVxyXG4gIHByaXZhdGUgX29uSG9tZVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0Rmlyc3RNb250aC5lbWl0KCk7XHJcbiAgfVxyXG4gIC8vaGlnaGxpZ2h0IGxhc3QgZW50cnkgb24gdGhlIHBhZ2VcclxuICBwcml2YXRlIF9vbkVuZFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0TGFzdE1vbnRoLmVtaXQoKTtcclxuICB9XHJcbiAgLy9hbG9uZTogaGlnaGxpZ2h0IHNhbWUgZW50cnkgb24gdGhlIG5leHQgcGFnZVxyXG4gIC8vd2l0aCBhbHQ6IGhpZ2hsaWdodCBzYW1lIGVudHJ5IG11bHRpcGxlIHBhZ2VzIGFmdGVyICgxMCBwYWdlcylcclxuICBwcml2YXRlIF9vblBhZ2VEb3duUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRTYW1lTW9udGhOZXh0UGFnZS5lbWl0KGV2ZW50LmFsdEtleSk7XHJcbiAgfVxyXG4gIC8vYWxvbmU6IGhpZ2hsaWdodCBzYW1lIGVudHJ5IG9uIHRoZSBwcmV2aW91cyBwYWdlXHJcbiAgLy93aXRoIGFsdDogaGlnaGxpZ2h0IHNhbWUgZW50cnkgbXVsdGlwbGUgcGFnZXMgYmVmb3JlICgxMCBwYWdlcylcclxuICBwcml2YXRlIF9vblBhZ2VVcFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0U2FtZU1vbnRoUHJldmlvdXNQYWdlLmVtaXQoZXZlbnQuYWx0S2V5KTtcclxuICB9XHJcblxyXG4gIC8vISBoZWxwZXJzXHJcbiAgaXNNb250aFRvZGF5KG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVllYXIoKSA9PT0gVE9EQVkuZ2V0RnVsbFllYXIoKSAmJiBtb250aCA9PT0gVE9EQVkuZ2V0TW9udGgoKTtcclxuICB9XHJcbiAgaXNNb250aFNlbGVjdGVkKG1vbnRoOiBudW1iZXIgfCBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAobW9udGggaW5zdGFuY2VvZiBEYXRlKSBtb250aCA9IG1vbnRoLmdldE1vbnRoKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSgpICE9PSBudWxsICYmXHJcbiAgICAgIHRoaXMuYWN0aXZlWWVhcigpID09PSB0aGlzLnNlbGVjdGVkRGF0ZSgpPy5nZXRGdWxsWWVhcigpICYmXHJcbiAgICAgIG1vbnRoID09PSB0aGlzLnNlbGVjdGVkRGF0ZSgpPy5nZXRNb250aCgpXHJcbiAgICApO1xyXG4gIH1cclxuICBpc1llYXJPdXRPZlJhbmdlKHllYXI6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaXNZZWFyT3V0T2ZSYW5nZSh5ZWFyLCB0aGlzLm1pbigpLCB0aGlzLm1heCgpKTtcclxuICB9XHJcblxyXG4gIC8vISB0ZW1wbGF0ZXNcclxuICByZWFkb25seSBtb250aHNWaWV3SGVhZGVyVGVtcGxhdGUgPSBpbnB1dC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxDYWxlbmRhck1vbnRoc1ZpZXdIZWFkZXJDb250ZXh0PiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBtb250aFRlbXBsYXRlID0gaW5wdXQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8Q2FsZW5kYXJNb250aENvbnRleHQ+IHwgdW5kZWZpbmVkPigpO1xyXG5cclxuICAvLyEgdGVtcGxhdGUgY29udGV4dHNcclxuICByZWFkb25seSBtb250aHNWaWV3SGVhZGVyQ29udGV4dCA9IGNvbXB1dGVkKFxyXG4gICAgKCk6IENhbGVuZGFyTW9udGhzVmlld0hlYWRlckNvbnRleHQgPT4gKHtcclxuICAgICAgbmV4dFBhZ2U6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnRyaWdnZUNoYW5nZVllYXIuZW1pdCh0aGlzLmFjdGl2ZVllYXIoKSArIDEpO1xyXG4gICAgICB9LFxyXG4gICAgICBwcmV2UGFnZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHJpZ2dlQ2hhbmdlWWVhci5lbWl0KHRoaXMuYWN0aXZlWWVhcigpIC0gMSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIG9wZW5ZZWFyc1ZpZXc6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnRyaWdnZXJPcGVuWWVhcnNWaWV3LmVtaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgb3BlbkRheXNWaWV3OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyT3BlbkRheXNWaWV3LmVtaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgY2FuR29Ub05leHRQYWdlOiAhdGhpcy5pc1llYXJPdXRPZlJhbmdlKHRoaXMuYWN0aXZlWWVhcigpICsgMSksXHJcbiAgICAgIGNhbkdvVG9QcmV2aW91c1BhZ2U6ICF0aGlzLmlzWWVhck91dE9mUmFuZ2UodGhpcy5hY3RpdmVZZWFyKCkgLSAxKSxcclxuICAgICAgeWVhcjogdGhpcy5hY3RpdmVZZWFyKCksXHJcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHRoaXMuYWN0aXZlWWVhcigpLCAwLCAxKSxcclxuICAgICAgJGltcGxpY2l0OiB0aGlzLmFjdGl2ZVllYXIoKSxcclxuICAgIH0pXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgbW9udGhDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKG1vbnRoOiBudW1iZXIpOiBDYWxlbmRhck1vbnRoQ29udGV4dCA9PiB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5hY3RpdmVZZWFyKCksIG1vbnRoLCAxKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1vbnRoLFxyXG4gICAgICBkYXRlLFxyXG4gICAgICAkaW1wbGljaXQ6IGRhdGUsXHJcbiAgICAgIHNlbGVjdDogKG1vbnRoOiBudW1iZXIgfCBEYXRlKSA9PiB7XHJcbiAgICAgICAgaWYgKG1vbnRoIGluc3RhbmNlb2YgRGF0ZSkgbW9udGggPSBtb250aC5nZXRNb250aCgpO1xyXG4gICAgICAgIHRoaXMudHJpZ2dlclNlbGVjdE1vbnRoLmVtaXQobW9udGgpO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9KTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXJkLW1vbnRocy12aWV3XCI+XHJcbiAgQGlmICghcmVhZE9ubHkoKSkge1xyXG4gIDxkaXYgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX3RvcC10b29sYmFyXCI+XHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgI2RlZmF1bHRNb250aHNWaWV3SGVhZGVyVGVtcGxhdGVcclxuICAgICAgbGV0LXllYXJcclxuICAgICAgbGV0LW5leHRQYWdlPVwibmV4dFBhZ2VcIlxyXG4gICAgICBsZXQtcHJldlBhZ2U9XCJwcmV2UGFnZVwiXHJcbiAgICAgIGxldC1jYW5Hb1RvTmV4dFBhZ2U9XCJjYW5Hb1RvTmV4dFBhZ2VcIlxyXG4gICAgICBsZXQtY2FuR29Ub1ByZXZpb3VzUGFnZT1cImNhbkdvVG9QcmV2aW91c1BhZ2VcIlxyXG4gICAgICBsZXQtb3BlbkRheXNWaWV3PVwib3BlbkRheXNWaWV3XCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImFyZC1jYWxlbmRhcl9fY2FsZW5kYXItaGVhZGVyXCI+XHJcbiAgICAgICAgPGFyZC1idXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYXJkLWNhbGVuZGFyX19oZWFkZXItYnV0dG9uXCJcclxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICBbY29sb3JdPVwiY29sb3IoKVwiXHJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkRheXNWaWV3KClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHllYXIgfX1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZHJvcGRvd24tYXJyb3dcIj48L2Rpdj5cclxuICAgICAgICA8L2FyZC1idXR0b24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1jYWxlbmRhci1hcnJvd3NcIj5cclxuICAgICAgICAgIDxhcmQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgY29sb3I9XCJub25lXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZQYWdlKClcIlxyXG4gICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29Ub1ByZXZpb3VzUGFnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcmQtaWNvbj5jaGV2cm9uX2xlZnQ8L2FyZC1pY29uPlxyXG4gICAgICAgICAgPC9hcmQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICA8YXJkLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwibm9uZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJuZXh0UGFnZSgpXCJcclxuICAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4KClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvVG9OZXh0UGFnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcmQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9hcmQtaWNvbj5cclxuICAgICAgICAgIDwvYXJkLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZSgpIHx8IGRlZmF1bHRNb250aHNWaWV3SGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwibW9udGhzVmlld0hlYWRlckNvbnRleHQoKVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuICA8ZGl2XHJcbiAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX3NpbXBsZS1ncmlkXCJcclxuICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgIFthcmlhTGFiZWxdPVwiY3VycmVudEFyaWFMYWJlbCgpXCJcclxuICAgIChmb2N1cyk9XCJmb2N1c0V2ZW50LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9jdXMpPVwib25Nb250aEdyaWRGb2N1cygpXCJcclxuICAgIChibHVyKT1cImJsdXJFdmVudC5lbWl0KCRldmVudClcIlxyXG4gICAgKGJsdXIpPVwib25Nb250aEdyaWRCbHVyKClcIlxyXG4gICAgKGNsaWNrKT1cIm9uTW9udGhHcmlkQ2xpY2soKVwiXHJcbiAgICAoa2V5ZG93bik9XCJvbk1haW5HcmlkS2V5ZG93bigkZXZlbnQpXCJcclxuICAgIHJvbGU9XCJncmlkXCJcclxuICA+XHJcbiAgICBAZm9yIChtb250aCBvZiBtb250aHNBcnJheSgpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX2VudHJ5XCJcclxuICAgICAgW2NsYXNzLmFyZC1jYWxlbmRhcl9fZW50cnktaGlnaGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRNb250aCgpID09PSBtb250aC52YWx1ZVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXJfX2VudHJ5LWRpc2FibGVkXT1cIm1vbnRoLmRpc2FibGVkXCJcclxuICAgICAgW2NsYXNzLmFyZC1jYWxlbmRhcl9fZW50cnktc2VsZWN0ZWRdPVwiaXNNb250aFNlbGVjdGVkKG1vbnRoLnZhbHVlKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXItdG9kYXldPVwiaXNNb250aFRvZGF5KG1vbnRoLnZhbHVlKVwiXHJcbiAgICAgIChjbGljayk9XCJvbkNhbGVuZGFyTW9udGhDbGljayhtb250aC52YWx1ZSlcIlxyXG4gICAgICAobW91c2Vtb3ZlKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgIChtb3VzZW92ZXIpPVwib25DYWxlbmRhck1vbnRoTW91c2VvdmVyKG1vbnRoLnZhbHVlKVwiXHJcbiAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBjbGFzcz1cImFyZC1jYWxlbmRhcl9fZW50cnktYnV0dG9uXCJcclxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9jdXMtb3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtYnV0dG9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAjZGVmYXVsdE1vbnRoVGVtcGxhdGVcclxuICAgICAgICAgICAgbGV0LW1vbnRoXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IG1vbnRoIHwgZGF0ZSA6ICdNTU0nIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vbnRoVGVtcGxhdGUoKSB8fCBkZWZhdWx0TW9udGhUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJtb250aENvbnRleHQoKShtb250aC52YWx1ZSlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { isDefined } from 'simple-bool';
|
|
2
|
+
export function isMonthOutOfRange(month, year, min, max) {
|
|
3
|
+
const dateForMinComparison = new Date(year, month + 1, 0); // last day of month
|
|
4
|
+
if (isDefined(min) && dateForMinComparison < min)
|
|
5
|
+
return -1;
|
|
6
|
+
const dateForMaxComparison = new Date(year, month, 1); // first day of month
|
|
7
|
+
if (isDefined(max) && dateForMaxComparison > max)
|
|
8
|
+
return 1;
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
11
|
+
export function getCalendarMonthsArray(year, min, max) {
|
|
12
|
+
const months = [];
|
|
13
|
+
for (let month = 0; month < 12; month++) {
|
|
14
|
+
const monthData = {
|
|
15
|
+
value: month,
|
|
16
|
+
disabled: !!isMonthOutOfRange(month, year, min, max),
|
|
17
|
+
};
|
|
18
|
+
months.push(monthData);
|
|
19
|
+
}
|
|
20
|
+
return months;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhzLXZpZXcuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY2FsZW5kYXIvdmlld3MvbW9udGhzLXZpZXcvbW9udGhzLXZpZXcuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hDLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFFLEdBQWdCLEVBQUUsR0FBZ0I7SUFDL0YsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtJQUMvRSxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxvQkFBb0IsR0FBRyxHQUFHO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU1RCxNQUFNLG9CQUFvQixHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDNUUsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksb0JBQW9CLEdBQUcsR0FBRztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsR0FBZ0IsRUFBRSxHQUFnQjtJQUNyRixNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO0lBQ3ZDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBc0I7WUFDbkMsS0FBSyxFQUFFLEtBQUs7WUFDWixRQUFRLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNyRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJBcnJheUl0ZW0gfSBmcm9tICcuLi8uLi9jYWxlbmRhci5pbnRlcm5hbC10eXBlcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNNb250aE91dE9mUmFuZ2UobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyLCBtaW46IERhdGUgfCBudWxsLCBtYXg6IERhdGUgfCBudWxsKTogbnVtYmVyIHtcclxuICBjb25zdCBkYXRlRm9yTWluQ29tcGFyaXNvbiA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCk7IC8vIGxhc3QgZGF5IG9mIG1vbnRoXHJcbiAgaWYgKGlzRGVmaW5lZChtaW4pICYmIGRhdGVGb3JNaW5Db21wYXJpc29uIDwgbWluKSByZXR1cm4gLTE7XHJcblxyXG4gIGNvbnN0IGRhdGVGb3JNYXhDb21wYXJpc29uID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpOyAvLyBmaXJzdCBkYXkgb2YgbW9udGhcclxuICBpZiAoaXNEZWZpbmVkKG1heCkgJiYgZGF0ZUZvck1heENvbXBhcmlzb24gPiBtYXgpIHJldHVybiAxO1xyXG5cclxuICByZXR1cm4gMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGVuZGFyTW9udGhzQXJyYXkoeWVhcjogbnVtYmVyLCBtaW46IERhdGUgfCBudWxsLCBtYXg6IERhdGUgfCBudWxsKTogQ2FsZW5kYXJBcnJheUl0ZW1bXSB7XHJcbiAgY29uc3QgbW9udGhzOiBDYWxlbmRhckFycmF5SXRlbVtdID0gW107XHJcbiAgZm9yIChsZXQgbW9udGggPSAwOyBtb250aCA8IDEyOyBtb250aCsrKSB7XHJcbiAgICBjb25zdCBtb250aERhdGE6IENhbGVuZGFyQXJyYXlJdGVtID0ge1xyXG4gICAgICB2YWx1ZTogbW9udGgsXHJcbiAgICAgIGRpc2FibGVkOiAhIWlzTW9udGhPdXRPZlJhbmdlKG1vbnRoLCB5ZWFyLCBtaW4sIG1heCksXHJcbiAgICB9O1xyXG4gICAgbW9udGhzLnB1c2gobW9udGhEYXRhKTtcclxuICB9XHJcbiAgcmV0dXJuIG1vbnRocztcclxufVxyXG4iXX0=
|