barsa-calendar 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +25 -0
  2. package/esm2020/barsa-calendar.mjs +5 -0
  3. package/esm2020/lib/barsa-calendar.module.mjs +106 -0
  4. package/esm2020/lib/calendar-container/calendar-container.component.mjs +190 -0
  5. package/esm2020/lib/calendar-header/calendar-header.component.mjs +61 -0
  6. package/esm2020/lib/calendar-list/calendar-list.component.mjs +19 -0
  7. package/esm2020/lib/calendar-list-container/calendar-list-container.component.mjs +30 -0
  8. package/esm2020/lib/calendar-list-item/calendar-list-item.component.mjs +14 -0
  9. package/esm2020/lib/calendar-month/calendar-month.component.mjs +244 -0
  10. package/esm2020/lib/calendar-selection-days/calendar-selection-days.component.mjs +193 -0
  11. package/esm2020/lib/calendar-week/calendar-week.component.mjs +182 -0
  12. package/esm2020/lib/constants.mjs +4 -0
  13. package/esm2020/lib/date-time-picker/date-time-picker.component.mjs +324 -0
  14. package/esm2020/lib/day-event-list/day-event-list.component.mjs +53 -0
  15. package/esm2020/lib/day-number-box/day-number-box.component.mjs +105 -0
  16. package/esm2020/lib/days-in-week.pipe.mjs +17 -0
  17. package/esm2020/lib/equal-date.pipe.mjs +23 -0
  18. package/esm2020/lib/event-button/event-button.component.mjs +70 -0
  19. package/esm2020/lib/event-date.pipe.mjs +24 -0
  20. package/esm2020/lib/event-preview/event-preview.component.mjs +60 -0
  21. package/esm2020/lib/event-time.pipe.mjs +22 -0
  22. package/esm2020/lib/from-to-time.pipe.mjs +23 -0
  23. package/esm2020/lib/models.mjs +14 -0
  24. package/esm2020/lib/month-days/month-days.component.mjs +220 -0
  25. package/esm2020/lib/services/calendar.service.mjs +610 -0
  26. package/esm2020/public-api.mjs +21 -0
  27. package/fesm2015/barsa-calendar.mjs +2447 -0
  28. package/fesm2015/barsa-calendar.mjs.map +1 -0
  29. package/fesm2020/barsa-calendar.mjs +2455 -0
  30. package/fesm2020/barsa-calendar.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/barsa-calendar.module.d.ts +33 -0
  33. package/lib/calendar-container/calendar-container.component.d.ts +73 -0
  34. package/lib/calendar-header/calendar-header.component.d.ts +29 -0
  35. package/lib/calendar-list/calendar-list.component.d.ts +8 -0
  36. package/lib/calendar-list-container/calendar-list-container.component.d.ts +14 -0
  37. package/lib/calendar-list-item/calendar-list-item.component.d.ts +7 -0
  38. package/lib/calendar-month/calendar-month.component.d.ts +70 -0
  39. package/lib/calendar-selection-days/calendar-selection-days.component.d.ts +47 -0
  40. package/lib/calendar-week/calendar-week.component.d.ts +57 -0
  41. package/lib/constants.d.ts +1 -0
  42. package/lib/date-time-picker/date-time-picker.component.d.ts +98 -0
  43. package/lib/day-event-list/day-event-list.component.d.ts +20 -0
  44. package/lib/day-number-box/day-number-box.component.d.ts +30 -0
  45. package/lib/days-in-week.pipe.d.ts +9 -0
  46. package/lib/equal-date.pipe.d.ts +8 -0
  47. package/lib/event-button/event-button.component.d.ts +26 -0
  48. package/lib/event-date.pipe.d.ts +9 -0
  49. package/lib/event-preview/event-preview.component.d.ts +19 -0
  50. package/lib/event-time.pipe.d.ts +9 -0
  51. package/lib/from-to-time.pipe.d.ts +9 -0
  52. package/lib/models.d.ts +107 -0
  53. package/lib/month-days/month-days.component.d.ts +69 -0
  54. package/lib/services/calendar.service.d.ts +70 -0
  55. package/package.json +31 -0
  56. package/public-api.d.ts +17 -0
@@ -0,0 +1,324 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Injectable, Input, Output, ViewChild } from '@angular/core';
2
+ import { distinctUntilChanged, map } from 'rxjs/operators';
3
+ import { BaseComponent, DateService, getDateService, BarsaApi } from 'barsa-novin-ray-core';
4
+ import { CalendarService } from '../services/calendar.service';
5
+ import { DatetimeAdapter, FdDate, FdDatetimeAdapter, TimeComponent, TimeI18n } from '@fundamental-ngx/core';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "barsa-novin-ray-core";
8
+ import * as i2 from "@fundamental-ngx/core";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "@angular/forms";
11
+ import * as i5 from "@fundamental-ngx/core/bar";
12
+ import * as i6 from "@fundamental-ngx/core/button";
13
+ import * as i7 from "@fundamental-ngx/core/input-group";
14
+ import * as i8 from "@fundamental-ngx/core/popover";
15
+ import * as i9 from "@fundamental-ngx/core/time";
16
+ import * as i10 from "@fundamental-ngx/core/toolbar";
17
+ import * as i11 from "../calendar-month/calendar-month.component";
18
+ export class TimeConfigI18n {
19
+ constructor(_bbbTranslate) {
20
+ this._bbbTranslate = _bbbTranslate;
21
+ /** Aria label for the 'increase hours' button */
22
+ this.increaseHoursLabel = 'Increase hours';
23
+ /** label for the 'hours' column */
24
+ this.hoursLabel = this._bbbTranslate.transform('Hours');
25
+ /** Aria label for the 'decrease hours' button */
26
+ this.decreaseHoursLabel = 'Decrease hours';
27
+ /** Aria label for the 'increase minutes' button */
28
+ this.increaseMinutesLabel = 'Increase minutes';
29
+ /** label for the 'minutes' column */
30
+ this.minutesLabel = this._bbbTranslate.transform('Minutes');
31
+ /** Aria label for the 'decrease minutes' button */
32
+ this.decreaseMinutesLabel = 'Decrease minutes';
33
+ /** Aria label for the 'increase seconds' button */
34
+ this.increaseSecondsLabel = 'Increase seconds';
35
+ /** label for the 'seconds' column */
36
+ this.secondsLabel = this._bbbTranslate.transform('Sec');
37
+ /** Aria label for the 'decrease seconds' button */
38
+ this.decreaseSecondsLabel = 'Decrease seconds';
39
+ /** Aria label for the 'increase period' button */
40
+ this.increasePeriodLabel = 'Increase period';
41
+ /** label for the 'period' column */
42
+ this.periodLabel = 'Period';
43
+ /** Aria label for the 'decrease period' button */
44
+ this.decreasePeriodLabel = 'Decrease period';
45
+ }
46
+ }
47
+ TimeConfigI18n.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimeConfigI18n, deps: [{ token: i1.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
48
+ TimeConfigI18n.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimeConfigI18n });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimeConfigI18n, decorators: [{
50
+ type: Injectable
51
+ }], ctorParameters: function () { return [{ type: i1.BbbTranslatePipe }]; } });
52
+ export class DateTimePickerComponent extends BaseComponent {
53
+ constructor(_datetimeAdapter, _logService, _portalService) {
54
+ super();
55
+ this._datetimeAdapter = _datetimeAdapter;
56
+ this._logService = _logService;
57
+ this.rtl = true;
58
+ this.rangeChange = new EventEmitter();
59
+ this.valueChange = new EventEmitter();
60
+ this.valueCaption = '';
61
+ this.selectionMode = 'day';
62
+ this.todayIndex = -1;
63
+ this.isValid = true;
64
+ this.months = [];
65
+ this.rtl$ = _portalService.rtl$;
66
+ this.width$ = _portalService.deviceSize$.pipe(distinctUntilChanged(), map((deviceSize) => {
67
+ if (!this.showDate) {
68
+ return 260;
69
+ }
70
+ switch (deviceSize) {
71
+ case 'l':
72
+ case 'xl':
73
+ return 560;
74
+ case 's':
75
+ return 320;
76
+ default:
77
+ return 520;
78
+ }
79
+ }));
80
+ this.height = 420;
81
+ }
82
+ ngOnInit() {
83
+ super.ngOnInit();
84
+ let culture = 'en-US';
85
+ switch (this.primaryCalendarType) {
86
+ case 'HijriShamsi':
87
+ culture = 'fa-IR';
88
+ break;
89
+ }
90
+ this.culture = culture;
91
+ this._calendarService = new CalendarService(this._logService, culture);
92
+ this.weekDaysMin = this._calendarService.weekDaysMin();
93
+ this.weekDays = this._calendarService.weekDays();
94
+ this.selectedMonth$ = this._calendarService.selected$;
95
+ this.today = this._calendarService.today;
96
+ if (this.value) {
97
+ this.timeValue = FdDate.getFdDateByDate(this.value);
98
+ this._setCaption(this.value);
99
+ this._calendarService.loadMonthByDate(this.value);
100
+ }
101
+ else {
102
+ this.timeValue = FdDate.getFdDateByDate(new Date());
103
+ }
104
+ // if (this.isRangePicker) {
105
+ // if (this.startRangeDate) {
106
+ // this._calendarService.loadMonthByDate(this.startRangeDate);
107
+ // }
108
+ // if (this.endRangeDate) {
109
+ // }
110
+ // } else {
111
+ // this._calendarService.loadMonthByDate(this.value);
112
+ // }
113
+ this.months = this._calendarService.Months;
114
+ this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);
115
+ }
116
+ onOpenPopover(popover) {
117
+ if (this.readonly || this.disabled) {
118
+ return;
119
+ }
120
+ if (this.timeComponent) {
121
+ setTimeout(() => this.timeComponent.refreshColumns(), 0);
122
+ }
123
+ popover.open();
124
+ }
125
+ onMonthSelected(monthName, index) {
126
+ this._calendarService.gotoMonth(monthName, index);
127
+ }
128
+ onYearSelected(year) {
129
+ this._calendarService.gotoYear(+year);
130
+ }
131
+ onCaptionChanged(e) {
132
+ if (e.length < 10) {
133
+ return;
134
+ }
135
+ const englishDateStr = BarsaApi.Common.Util.ReplaceFaToArCharchter(e);
136
+ const moment = this._calendarService._dateService.stringToMoment(englishDateStr, 'jYYYY/jM/jD');
137
+ const isValid = moment.isValid();
138
+ const date = moment.toDate();
139
+ if (isValid) {
140
+ this.startSelectedDay = this.endSelectedDay = null;
141
+ this._raisValueChanged(date, false);
142
+ }
143
+ this.isValid = isValid;
144
+ }
145
+ onPrevTap() {
146
+ if (this.selectionMode === 'day') {
147
+ this._calendarService.loadPrevious();
148
+ }
149
+ else if (this.selectionMode === 'month') {
150
+ this._calendarService.loadPrevYear();
151
+ }
152
+ else if (this.selectionMode === 'year') {
153
+ this._prepareYear(Number(this.years[0]) - 20);
154
+ }
155
+ }
156
+ onNextTap() {
157
+ if (this.selectionMode === 'day') {
158
+ this._calendarService.loadNext();
159
+ }
160
+ else if (this.selectionMode === 'month') {
161
+ this._calendarService.loadNextYear();
162
+ }
163
+ else if (this.selectionMode === 'year') {
164
+ this._prepareYear(Number(this.years[this.years.length - 1]) + 1);
165
+ }
166
+ }
167
+ onToday() {
168
+ const today = new Date();
169
+ this.timeValue = this._datetimeAdapter.setTime(this.timeValue, today.getHours(), today.getMinutes(), today.getSeconds());
170
+ if (this._calendarService.todayDay) {
171
+ this.startSelectedDay = this._calendarService.todayDay;
172
+ }
173
+ this._calendarService.gotoToday();
174
+ }
175
+ onDayClick(day, popover) {
176
+ this.isValid = true;
177
+ this.startSelectedDay = this.endSelectedDay = day;
178
+ if (this.showTime) {
179
+ return;
180
+ }
181
+ this._setFirstAndEndDay(day, popover);
182
+ }
183
+ onPopoverOpenChange(isOpen) {
184
+ if (isOpen) {
185
+ this._lastValue = this.value;
186
+ }
187
+ else {
188
+ this._lastValue = undefined;
189
+ }
190
+ }
191
+ onOk(popover) {
192
+ popover.close();
193
+ this.value = this.showDate ? this.startSelectedDay?.date ?? this.value : new Date();
194
+ this.value?.setHours(this.timeValue.hour);
195
+ this.value?.setMinutes(this.timeValue.minute);
196
+ this.value?.setSeconds(this.timeValue.second);
197
+ this._raisValueChanged(this.value);
198
+ }
199
+ onCancel(popover) {
200
+ if (this._lastValue !== this.value) {
201
+ this.value = this._lastValue;
202
+ this._setCaption(this.value);
203
+ }
204
+ popover.close();
205
+ }
206
+ _prepareYear(from) {
207
+ const years = [];
208
+ for (let i = 0; i < 20; i++) {
209
+ years.push(`${from + i}`);
210
+ }
211
+ this.years = years;
212
+ }
213
+ _setCaption(value) {
214
+ if (!value) {
215
+ this.valueCaption = '';
216
+ return;
217
+ }
218
+ let formatPattern = this.formatPattern.replace('YYYY', 'jYYYY');
219
+ formatPattern = formatPattern.replace('MM', 'jMM');
220
+ formatPattern = formatPattern.replace('DD', 'jDD');
221
+ this.valueCaption = this._calendarService._dateService.getMoment(value).format(formatPattern);
222
+ }
223
+ _raisValueChanged(date, setCaption = true) {
224
+ this.value = date;
225
+ if (setCaption) {
226
+ this._setCaption(date);
227
+ }
228
+ this.valueChange.emit(date);
229
+ }
230
+ _setFirstAndEndDay(day, popover) {
231
+ if (popover) {
232
+ popover.close();
233
+ }
234
+ if (!this.isRangePicker) {
235
+ this._raisValueChanged(day.date);
236
+ return;
237
+ }
238
+ if (this.startSelectedDay) {
239
+ this.endSelectedDay = day;
240
+ }
241
+ else {
242
+ this.startSelectedDay = day;
243
+ }
244
+ if (this.startSelectedDay && this.endSelectedDay && this.startSelectedDay.date > this.endSelectedDay.date) {
245
+ const temp = this.startSelectedDay;
246
+ this.startSelectedDay = this.endSelectedDay;
247
+ this.endSelectedDay = temp;
248
+ }
249
+ if (this.startSelectedDay && this.endSelectedDay) {
250
+ this.rangeChange.emit({
251
+ startDay: this.startSelectedDay.date,
252
+ endDay: this.endSelectedDay.date
253
+ });
254
+ }
255
+ }
256
+ }
257
+ DateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i2.DatetimeAdapter }, { token: i1.LogService }, { token: i1.PortalService }], target: i0.ɵɵFactoryTarget.Component });
258
+ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: DateTimePickerComponent, selector: "bc-date-time-picker", inputs: { placeholder: "placeholder", primaryCalendarType: "primaryCalendarType", formatPattern: "formatPattern", value: "value", timeValue: "timeValue", startRangeDate: "startRangeDate", endRangeDate: "endRangeDate", isRangePicker: "isRangePicker", showTime: "showTime", showDate: "showDate", rtl: "rtl", readonly: "readonly", disabled: "disabled" }, outputs: { rangeChange: "rangeChange", valueChange: "valueChange" }, providers: [
259
+ {
260
+ provide: DatetimeAdapter,
261
+ useClass: FdDatetimeAdapter
262
+ },
263
+ {
264
+ provide: TimeI18n,
265
+ useClass: TimeConfigI18n
266
+ },
267
+ {
268
+ provide: DateService,
269
+ useFactory: getDateService
270
+ },
271
+ CalendarService
272
+ ], viewQueries: [{ propertyName: "timeComponent", first: true, predicate: TimeComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-input-group\n placement=\"after\"\n glyph=\"calendar\"\n glyphAriaLabel=\"select day\"\n [placeholder]=\"placeholder\"\n ariaLabelledby=\"fd-input-group-icon-label-2\"\n [button]=\"true\"\n [state]=\"isValid ? 'success' : 'error'\"\n [showFocus]=\"true\"\n (addOnButtonClicked)=\"onOpenPopover(popover)\"\n [ngModel]=\"value | dateTimeToCaption: formatPattern:culture:showDate:showTime\"\n (ngModelChange)=\"onCaptionChanged($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n>\n</fd-input-group>\n<fd-popover\n #popover\n (isOpenChange)=\"onPopoverOpenChange($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"(deviceSize$ | async) === 's'\"\n>\n <fd-popover-body [style.width.px]=\"width$ | async\">\n <ng-container\n *ngTemplateOutlet=\"\n month;\n context: {\n $implicit: selectedMonth$ | async,\n width: width$ | async,\n height: height,\n rtl: rtl$ | async,\n weekDays: weekDays,\n weekDaysMin: weekDaysMin,\n today: today,\n deviceSize: deviceSize$ | async,\n popover: popover\n }\n \"\n >\n </ng-container>\n <div fd-popover-body-footer *ngIf=\"showTime\">\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-left *ngIf=\"rtl\">\n <container *ngTemplateOutlet=\"footerButtons\"></container>\n </div>\n <div fd-bar-right *ngIf=\"!rtl\">\n <container *ngTemplateOutlet=\"footerButtons\"></container>\n </div>\n </div>\n </div>\n </fd-popover-body>\n</fd-popover>\n<ng-template #footerButtons>\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"onCancel(popover)\"></fd-button-bar>\n <fd-button-bar [label]=\"'Ok' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onOk(popover)\"></fd-button-bar>\n</ng-template>\n<ng-template\n #month\n let-selectedMonth\n let-width=\"width\"\n let-height=\"height\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-popover=\"popover\"\n>\n <fd-toolbar [fdType]=\"'transparent'\">\n <button\n fd-button\n fd-toolbar-item\n [label]=\"(showDate ? 'DateR_Today' : 'Now') | bbbTranslate\"\n (click)=\"onToday()\"\n ></button>\n <button\n *ngIf=\"showDate\"\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\n (click)=\"onPrevTap()\"\n ></button>\n <button\n *ngIf=\"showDate\"\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\n (click)=\"onNextTap()\"\n ></button>\n <div class=\"month-years-wrapper\" *ngIf=\"showDate\" fd-title fd-toolbar-item>\n <button\n *ngIf=\"selectionMode === 'day' || selectionMode === 'month'\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.monthName\"\n (click)=\"selectionMode = 'month'\"\n ></button>\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.year\"\n (click)=\"selectionMode = 'year'\"\n ></button>\n </div>\n </fd-toolbar>\n <div style=\"display: flex\">\n <ng-container [ngSwitch]=\"selectionMode\">\n <ng-container *ngSwitchCase=\"'month'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 33%\"\n *ngFor=\"let month of months; let i = index\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\n [label]=\"month\"\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\n ></button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'year'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 25%\"\n *ngFor=\"let year of years\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\n [label]=\"year\"\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\n ></button>\n </div>\n </ng-container>\n <div *ngSwitchDefault style=\"display: flex\">\n <bc-calendar-month\n *ngIf=\"showDate\"\n [style.width]=\"width\"\n [containerHeight]=\"height\"\n [containerWidth]=\"width\"\n [rtl]=\"rtl\"\n [monthWeeksCount]=\"selectedMonth.weeksCount\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [datePicker]=\"true\"\n [dateRange]=\"true\"\n [selectedDate]=\"startSelectedDay ? startSelectedDay.date : value\"\n [days]=\"selectedMonth.days\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event, popover)\"\n ></bc-calendar-month>\n <div class=\"seperator\"></div>\n <fd-time\n *ngIf=\"showTime\"\n [(ngModel)]=\"timeValue\"\n [compact]=\"(deviceSize$ | async) !== 's'\"\n [displaySeconds]=\"false\"\n ></fd-time>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block}fd-popover{display:block}fd-input-group ::ng-deep input{direction:ltr}fd-time ::ng-deep .fd-time{padding-top:0}.seperator{border-left:.0625rem solid var(--sapPageFooter_BorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i5.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i5.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i5.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i8.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i8.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i8.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i9.TimeComponent, selector: "fd-time", inputs: ["meridian", "validate", "keepTwoDigits", "disabled", "displaySeconds", "displayMinutes", "displayHours", "tablet", "elementsAtOnce", "time", "spinnerButtons"] }, { kind: "directive", type: i9.DeprecatedTimeContentDensityDirective, selector: "fd-time-column[compact], fd-time[compact]" }, { kind: "component", type: i10.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i10.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i11.CalendarMonthComponent, selector: "bc-calendar-month", inputs: ["monthWeeksCount", "weekDays", "weekDaysMin", "today", "containerHeight", "days", "calendarFields", "rtl", "deviceSize", "moDataList", "datePicker", "rangePicker", "canDelete", "canAdd", "canEdit", "selectedDate", "startSelectedDayIndex", "endSelectedDayIndex"], outputs: ["editEvent", "deleteEvent", "daySelect", "dayClick", "dayMouseMove", "dayMouseUp", "dayMouseDown", "showEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.DateTimeToCaptionPipe, name: "dateTimeToCaption" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DateTimePickerComponent, decorators: [{
274
+ type: Component,
275
+ args: [{ selector: 'bc-date-time-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
276
+ {
277
+ provide: DatetimeAdapter,
278
+ useClass: FdDatetimeAdapter
279
+ },
280
+ {
281
+ provide: TimeI18n,
282
+ useClass: TimeConfigI18n
283
+ },
284
+ {
285
+ provide: DateService,
286
+ useFactory: getDateService
287
+ },
288
+ CalendarService
289
+ ], template: "<fd-input-group\n placement=\"after\"\n glyph=\"calendar\"\n glyphAriaLabel=\"select day\"\n [placeholder]=\"placeholder\"\n ariaLabelledby=\"fd-input-group-icon-label-2\"\n [button]=\"true\"\n [state]=\"isValid ? 'success' : 'error'\"\n [showFocus]=\"true\"\n (addOnButtonClicked)=\"onOpenPopover(popover)\"\n [ngModel]=\"value | dateTimeToCaption: formatPattern:culture:showDate:showTime\"\n (ngModelChange)=\"onCaptionChanged($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n>\n</fd-input-group>\n<fd-popover\n #popover\n (isOpenChange)=\"onPopoverOpenChange($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"(deviceSize$ | async) === 's'\"\n>\n <fd-popover-body [style.width.px]=\"width$ | async\">\n <ng-container\n *ngTemplateOutlet=\"\n month;\n context: {\n $implicit: selectedMonth$ | async,\n width: width$ | async,\n height: height,\n rtl: rtl$ | async,\n weekDays: weekDays,\n weekDaysMin: weekDaysMin,\n today: today,\n deviceSize: deviceSize$ | async,\n popover: popover\n }\n \"\n >\n </ng-container>\n <div fd-popover-body-footer *ngIf=\"showTime\">\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-left *ngIf=\"rtl\">\n <container *ngTemplateOutlet=\"footerButtons\"></container>\n </div>\n <div fd-bar-right *ngIf=\"!rtl\">\n <container *ngTemplateOutlet=\"footerButtons\"></container>\n </div>\n </div>\n </div>\n </fd-popover-body>\n</fd-popover>\n<ng-template #footerButtons>\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"onCancel(popover)\"></fd-button-bar>\n <fd-button-bar [label]=\"'Ok' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onOk(popover)\"></fd-button-bar>\n</ng-template>\n<ng-template\n #month\n let-selectedMonth\n let-width=\"width\"\n let-height=\"height\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-popover=\"popover\"\n>\n <fd-toolbar [fdType]=\"'transparent'\">\n <button\n fd-button\n fd-toolbar-item\n [label]=\"(showDate ? 'DateR_Today' : 'Now') | bbbTranslate\"\n (click)=\"onToday()\"\n ></button>\n <button\n *ngIf=\"showDate\"\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\n (click)=\"onPrevTap()\"\n ></button>\n <button\n *ngIf=\"showDate\"\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\n (click)=\"onNextTap()\"\n ></button>\n <div class=\"month-years-wrapper\" *ngIf=\"showDate\" fd-title fd-toolbar-item>\n <button\n *ngIf=\"selectionMode === 'day' || selectionMode === 'month'\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.monthName\"\n (click)=\"selectionMode = 'month'\"\n ></button>\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.year\"\n (click)=\"selectionMode = 'year'\"\n ></button>\n </div>\n </fd-toolbar>\n <div style=\"display: flex\">\n <ng-container [ngSwitch]=\"selectionMode\">\n <ng-container *ngSwitchCase=\"'month'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 33%\"\n *ngFor=\"let month of months; let i = index\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\n [label]=\"month\"\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\n ></button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'year'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 25%\"\n *ngFor=\"let year of years\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\n [label]=\"year\"\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\n ></button>\n </div>\n </ng-container>\n <div *ngSwitchDefault style=\"display: flex\">\n <bc-calendar-month\n *ngIf=\"showDate\"\n [style.width]=\"width\"\n [containerHeight]=\"height\"\n [containerWidth]=\"width\"\n [rtl]=\"rtl\"\n [monthWeeksCount]=\"selectedMonth.weeksCount\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [datePicker]=\"true\"\n [dateRange]=\"true\"\n [selectedDate]=\"startSelectedDay ? startSelectedDay.date : value\"\n [days]=\"selectedMonth.days\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event, popover)\"\n ></bc-calendar-month>\n <div class=\"seperator\"></div>\n <fd-time\n *ngIf=\"showTime\"\n [(ngModel)]=\"timeValue\"\n [compact]=\"(deviceSize$ | async) !== 's'\"\n [displaySeconds]=\"false\"\n ></fd-time>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block}fd-popover{display:block}fd-input-group ::ng-deep input{direction:ltr}fd-time ::ng-deep .fd-time{padding-top:0}.seperator{border-left:.0625rem solid var(--sapPageFooter_BorderColor, #d9d9d9)}\n"] }]
290
+ }], ctorParameters: function () { return [{ type: i2.DatetimeAdapter }, { type: i1.LogService }, { type: i1.PortalService }]; }, propDecorators: { placeholder: [{
291
+ type: Input
292
+ }], primaryCalendarType: [{
293
+ type: Input
294
+ }], formatPattern: [{
295
+ type: Input
296
+ }], value: [{
297
+ type: Input
298
+ }], timeValue: [{
299
+ type: Input
300
+ }], startRangeDate: [{
301
+ type: Input
302
+ }], endRangeDate: [{
303
+ type: Input
304
+ }], isRangePicker: [{
305
+ type: Input
306
+ }], showTime: [{
307
+ type: Input
308
+ }], showDate: [{
309
+ type: Input
310
+ }], rtl: [{
311
+ type: Input
312
+ }], readonly: [{
313
+ type: Input
314
+ }], disabled: [{
315
+ type: Input
316
+ }], rangeChange: [{
317
+ type: Output
318
+ }], valueChange: [{
319
+ type: Output
320
+ }], timeComponent: [{
321
+ type: ViewChild,
322
+ args: [TimeComponent]
323
+ }] } });
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQ0gsYUFBYSxFQUViLFdBQVcsRUFDWCxjQUFjLEVBR2QsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUU1RyxNQUFNLE9BQU8sY0FBYztJQW9DdkIsWUFBb0IsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBbkNuRCxpREFBaUQ7UUFDakQsdUJBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFFdEMsbUNBQW1DO1FBQ25DLGVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRCxpREFBaUQ7UUFDakQsdUJBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFF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aUI7U0FDOUI7UUFDRDtZQUNJLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxjQUFjO1NBQzNCO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsV0FBVztZQUNwQixVQUFVLEVBQUUsY0FBYztTQUM3QjtRQUNELGVBQWU7S0FDbEIseUVBa0JVLGFBQWEsdUVDdEc1Qixzek1Ba0tBOzJGRDVFYSx1QkFBdUI7a0JBckJuQyxTQUFTOytCQUNJLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsaUJBQWlCO3lCQUM5Qjt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsUUFBUTs0QkFDakIsUUFBUSxFQUFFLGNBQWM7eUJBQzNCO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixVQUFVLEVBQUUsY0FBYzt5QkFDN0I7d0JBQ0QsZUFBZTtxQkFDbEI7MkpBR1EsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ21CLGFBQWE7c0JBQXRDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RhYmxlLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEJiYlRyYW5zbGF0ZVBpcGUsXG4gICAgRGF0ZVNlcnZpY2UsXG4gICAgZ2V0RGF0ZVNlcnZpY2UsXG4gICAgTG9nU2VydmljZSxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIEJhcnNhQXBpXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyTW9udGhJbmZvLCBEYXkgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIsIEZkRGF0ZSwgRmREYXRldGltZUFkYXB0ZXIsIFRpbWVDb21wb25lbnQsIFRpbWVJMThuIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaW1lQ29uZmlnSTE4biB7XG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnaW5jcmVhc2UgaG91cnMnIGJ1dHRvbiAqL1xuICAgIGluY3JlYXNlSG91cnNMYWJlbCA9ICdJbmNyZWFzZSBob3Vycyc7XG5cbiAgICAvKiogbGFiZWwgZm9yIHRoZSAnaG91cnMnIGNvbHVtbiAqL1xuICAgIGhvdXJzTGFiZWwgPSB0aGlzLl9iYmJUcmFuc2xhdGUudHJhbnNmb3JtKCdIb3VycycpO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnZGVjcmVhc2UgaG91cnMnIGJ1dHRvbiAqL1xuICAgIGRlY3JlYXNlSG91cnNMYWJlbCA9ICdEZWNyZWFzZSBob3Vycyc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdpbmNyZWFzZSBtaW51dGVzJyBidXR0b24gKi9cbiAgICBpbmNyZWFzZU1pbnV0ZXNMYWJlbCA9ICdJbmNyZWFzZSBtaW51dGVzJztcblxuICAgIC8qKiBsYWJlbCBmb3IgdGhlICdtaW51dGVzJyBjb2x1bW4gKi9cbiAgICBtaW51dGVzTGFiZWwgPSB0aGlzLl9iYmJUcmFuc2xhdGUudHJhbnNmb3JtKCdNaW51dGVzJyk7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdkZWNyZWFzZSBtaW51dGVzJyBidXR0b24gKi9cbiAgICBkZWNyZWFzZU1pbnV0ZXNMYWJlbCA9ICdEZWNyZWFzZSBtaW51dGVzJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgJ2luY3JlYXNlIHNlY29uZHMnIGJ1dHRvbiAqL1xuICAgIGluY3JlYXNlU2Vjb25kc0xhYmVsID0gJ0luY3JlYXNlIHNlY29uZHMnO1xuXG4gICAgLyoqIGxhYmVsIGZvciB0aGUgJ3NlY29uZHMnIGNvbHVtbiAqL1xuICAgIHNlY29uZHNMYWJlbCA9IHRoaXMuX2JiYlRyYW5zbGF0ZS50cmFuc2Zvcm0oJ1NlYycpO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnZGVjcmVhc2Ugc2Vjb25kcycgYnV0dG9uICovXG4gICAgZGVjcmVhc2VTZWNvbmRzTGFiZWwgPSAnRGVjcmVhc2Ugc2Vjb25kcyc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdpbmNyZWFzZSBwZXJpb2QnIGJ1dHRvbiAqL1xuICAgIGluY3JlYXNlUGVyaW9kTGFiZWwgPSAnSW5jcmVhc2UgcGVyaW9kJztcblxuICAgIC8qKiBsYWJlbCBmb3IgdGhlICdwZXJpb2QnIGNvbHVtbiAqL1xuICAgIHBlcmlvZExhYmVsID0gJ1BlcmlvZCc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdkZWNyZWFzZSBwZXJpb2QnIGJ1dHRvbiAqL1xuICAgIGRlY3JlYXNlUGVyaW9kTGFiZWwgPSAnRGVjcmVhc2UgcGVyaW9kJztcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9iYmJUcmFuc2xhdGU6IEJiYlRyYW5zbGF0ZVBpcGUpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmMtZGF0ZS10aW1lLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEZkRGF0ZXRpbWVBZGFwdGVyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRpbWVJMThuLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IFRpbWVDb25maWdJMThuXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogZ2V0RGF0ZVNlcnZpY2VcbiAgICAgICAgfSxcbiAgICAgICAgQ2FsZW5kYXJTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJpbWFyeUNhbGVuZGFyVHlwZTogJ0dyZWdvcmlhbicgfCAnUGVyc2lhbicgfCBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9ybWF0UGF0dGVybjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIHRpbWVWYWx1ZTogRmREYXRlO1xuICAgIEBJbnB1dCgpIHN0YXJ0UmFuZ2VEYXRlOiBEYXRlO1xuICAgIEBJbnB1dCgpIGVuZFJhbmdlRGF0ZTogRGF0ZTtcbiAgICBASW5wdXQoKSBpc1JhbmdlUGlja2VyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dUaW1lOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dEYXRlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJ0bCA9IHRydWU7XG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0YXJ0RGF5OiBEYXRlOyBlbmREYXk6IERhdGUgfT4oKTtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gICAgQFZpZXdDaGlsZChUaW1lQ29tcG9uZW50KSB0aW1lQ29tcG9uZW50OiBUaW1lQ29tcG9uZW50PEZkRGF0ZT47XG4gICAgdmFsdWVDYXB0aW9uID0gJyc7XG4gICAgZW5kU2VsZWN0ZWREYXk6IERheSB8IG51bGw7XG4gICAgc3RhcnRTZWxlY3RlZERheTogRGF5IHwgbnVsbDtcbiAgICB2YWx1ZURheTogRGF5IHwgbnVsbDtcblxuICAgIHNlbGVjdGlvbk1vZGU6ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyA9ICdkYXknO1xuICAgIHRvZGF5SW5kZXggPSAtMTtcbiAgICB3aWR0aCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICBzZWxlY3RlZE1vbnRoJDogT2JzZXJ2YWJsZTxDYWxlbmRhck1vbnRoSW5mbz47XG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICB0b2RheTogRGF0ZTtcbiAgICB3ZWVrRGF5c01pbjogc3RyaW5nW107XG4gICAgd2Vla0RheXM6IHN0cmluZ1tdO1xuICAgIGRldmljZVNpemUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgaXNWYWxpZCA9IHRydWU7XG4gICAgY3VsdHVyZTogc3RyaW5nO1xuICAgIG1vbnRoczogc3RyaW5nW10gPSBbXTtcbiAgICB5ZWFyczogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2U7XG4gICAgcHJpdmF0ZSBfbGFzdFZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2RhdGV0aW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEZkRGF0ZT4sXG4gICAgICAgIHByaXZhdGUgX2xvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsXG4gICAgICAgIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5ydGwkID0gX3BvcnRhbFNlcnZpY2UucnRsJDtcbiAgICAgICAgdGhpcy53aWR0aCQgPSBfcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIG1hcCgoZGV2aWNlU2l6ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93RGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjYwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGRldmljZVNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1NjA7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDMyMDtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1MjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmhlaWdodCA9IDQyMDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgbGV0IGN1bHR1cmUgPSAnZW4tVVMnO1xuICAgICAgICBzd2l0Y2ggKHRoaXMucHJpbWFyeUNhbGVuZGFyVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnSGlqcmlTaGFtc2knOlxuICAgICAgICAgICAgICAgIGN1bHR1cmUgPSAnZmEtSVInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VsdHVyZSA9IGN1bHR1cmU7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZSA9IG5ldyBDYWxlbmRhclNlcnZpY2UodGhpcy5fbG9nU2VydmljZSwgY3VsdHVyZSk7XG4gICAgICAgIHRoaXMud2Vla0RheXNNaW4gPSB0aGlzLl9jYWxlbmRhclNlcnZpY2Uud2Vla0RheXNNaW4oKTtcbiAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS53ZWVrRGF5cygpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGgkID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnNlbGVjdGVkJDtcbiAgICAgICAgdGhpcy50b2RheSA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS50b2RheTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50aW1lVmFsdWUgPSBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2FwdGlvbih0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sb2FkTW9udGhCeURhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVWYWx1ZSA9IEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKHRoaXMuaXNSYW5nZVBpY2tlcikge1xuICAgICAgICAvLyAgIGlmICh0aGlzLnN0YXJ0UmFuZ2VEYXRlKSB7XG4gICAgICAgIC8vICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UubG9hZE1vbnRoQnlEYXRlKHRoaXMuc3RhcnRSYW5nZURhdGUpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICBpZiAodGhpcy5lbmRSYW5nZURhdGUpIHtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmxvYWRNb250aEJ5RGF0ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgLy8gfVxuICAgICAgICB0aGlzLm1vbnRocyA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5Nb250aHM7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVZZWFyKHRoaXMuX2NhbGVuZGFyU2VydmljZS5zZWxlY3RlZE1vbnRoLmRhdGVJbmZvLnllYXIpO1xuICAgIH1cblxuICAgIG9uT3BlblBvcG92ZXIocG9wb3Zlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGltZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRpbWVDb21wb25lbnQucmVmcmVzaENvbHVtbnMoKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9wb3Zlci5vcGVuKCk7XG4gICAgfVxuICAgIG9uTW9udGhTZWxlY3RlZChtb250aE5hbWU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZ290b01vbnRoKG1vbnRoTmFtZSwgaW5kZXgpO1xuICAgIH1cbiAgICBvblllYXJTZWxlY3RlZCh5ZWFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmdvdG9ZZWFyKCt5ZWFyKTtcbiAgICB9XG5cbiAgICBvbkNhcHRpb25DaGFuZ2VkKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUubGVuZ3RoIDwgMTApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmdsaXNoRGF0ZVN0ciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlJlcGxhY2VGYVRvQXJDaGFyY2h0ZXIoZSk7XG4gICAgICAgIGNvbnN0IG1vbWVudCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5fZGF0ZVNlcnZpY2Uuc3RyaW5nVG9Nb21lbnQoZW5nbGlzaERhdGVTdHIsICdqWVlZWS9qTS9qRCcpO1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gbW9tZW50LmlzVmFsaWQoKTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudC50b0RhdGUoKTtcbiAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTZWxlY3RlZERheSA9IHRoaXMuZW5kU2VsZWN0ZWREYXkgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fcmFpc1ZhbHVlQ2hhbmdlZChkYXRlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1ZhbGlkID0gaXNWYWxpZDtcbiAgICB9XG4gICAgb25QcmV2VGFwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnZGF5Jykge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmxvYWRQcmV2aW91cygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmxvYWRQcmV2WWVhcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlWWVhcihOdW1iZXIodGhpcy55ZWFyc1swXSkgLSAyMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5leHRUYXAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdkYXknKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UubG9hZE5leHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sb2FkTmV4dFllYXIoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZVllYXIoTnVtYmVyKHRoaXMueWVhcnNbdGhpcy55ZWFycy5sZW5ndGggLSAxXSkgKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG9kYXkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy50aW1lVmFsdWUgPSB0aGlzLl9kYXRldGltZUFkYXB0ZXIuc2V0VGltZShcbiAgICAgICAgICAgIHRoaXMudGltZVZhbHVlLFxuICAgICAgICAgICAgdG9kYXkuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIHRvZGF5LmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHRvZGF5LmdldFNlY29uZHMoKVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnRvZGF5RGF5KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWREYXkgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2UudG9kYXlEYXk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmdvdG9Ub2RheSgpO1xuICAgIH1cblxuICAgIG9uRGF5Q2xpY2soZGF5OiBEYXksIHBvcG92ZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydFNlbGVjdGVkRGF5ID0gdGhpcy5lbmRTZWxlY3RlZERheSA9IGRheTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRGaXJzdEFuZEVuZERheShkYXksIHBvcG92ZXIpO1xuICAgIH1cblxuICAgIG9uUG9wb3Zlck9wZW5DaGFuZ2UoaXNPcGVuKTogdm9pZCB7XG4gICAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9rKHBvcG92ZXIpOiB2b2lkIHtcbiAgICAgICAgcG9wb3Zlci5jbG9zZSgpO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zaG93RGF0ZSA/IHRoaXMuc3RhcnRTZWxlY3RlZERheT8uZGF0ZSA/PyB0aGlzLnZhbHVlIDogbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy52YWx1ZT8uc2V0SG91cnModGhpcy50aW1lVmFsdWUuaG91cik7XG4gICAgICAgIHRoaXMudmFsdWU/LnNldE1pbnV0ZXModGhpcy50aW1lVmFsdWUubWludXRlKTtcbiAgICAgICAgdGhpcy52YWx1ZT8uc2V0U2Vjb25kcyh0aGlzLnRpbWVWYWx1ZS5zZWNvbmQpO1xuICAgICAgICB0aGlzLl9yYWlzVmFsdWVDaGFuZ2VkKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsKHBvcG92ZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2xhc3RWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX2xhc3RWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcHRpb24odGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9wb3Zlci5jbG9zZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9wcmVwYXJlWWVhcihmcm9tOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeWVhcnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xuICAgICAgICAgICAgeWVhcnMucHVzaChgJHtmcm9tICsgaX1gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnllYXJzID0geWVhcnM7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldENhcHRpb24odmFsdWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNhcHRpb24gPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZm9ybWF0UGF0dGVybiA9IHRoaXMuZm9ybWF0UGF0dGVybi5yZXBsYWNlKCdZWVlZJywgJ2pZWVlZJyk7XG4gICAgICAgIGZvcm1hdFBhdHRlcm4gPSBmb3JtYXRQYXR0ZXJuLnJlcGxhY2UoJ01NJywgJ2pNTScpO1xuICAgICAgICBmb3JtYXRQYXR0ZXJuID0gZm9ybWF0UGF0dGVybi5yZXBsYWNlKCdERCcsICdqREQnKTtcbiAgICAgICAgdGhpcy52YWx1ZUNhcHRpb24gPSB0aGlzLl9jYWxlbmRhclNlcnZpY2UuX2RhdGVTZXJ2aWNlLmdldE1vbWVudCh2YWx1ZSkuZm9ybWF0KGZvcm1hdFBhdHRlcm4pO1xuICAgIH1cbiAgICBwcml2YXRlIF9yYWlzVmFsdWVDaGFuZ2VkKGRhdGUsIHNldENhcHRpb24gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgICAgICBpZiAoc2V0Q2FwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2FwdGlvbihkYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Rmlyc3RBbmRFbmREYXkoZGF5OiBEYXksIHBvcG92ZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBvcG92ZXIpIHtcbiAgICAgICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNSYW5nZVBpY2tlcikge1xuICAgICAgICAgICAgdGhpcy5fcmFpc1ZhbHVlQ2hhbmdlZChkYXkuZGF0ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc3RhcnRTZWxlY3RlZERheSkge1xuICAgICAgICAgICAgdGhpcy5lbmRTZWxlY3RlZERheSA9IGRheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTZWxlY3RlZERheSA9IGRheTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGFydFNlbGVjdGVkRGF5ICYmIHRoaXMuZW5kU2VsZWN0ZWREYXkgJiYgdGhpcy5zdGFydFNlbGVjdGVkRGF5LmRhdGUgPiB0aGlzLmVuZFNlbGVjdGVkRGF5LmRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSB0aGlzLnN0YXJ0U2VsZWN0ZWREYXk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWREYXkgPSB0aGlzLmVuZFNlbGVjdGVkRGF5O1xuICAgICAgICAgICAgdGhpcy5lbmRTZWxlY3RlZERheSA9IHRlbXA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc3RhcnRTZWxlY3RlZERheSAmJiB0aGlzLmVuZFNlbGVjdGVkRGF5KSB7XG4gICAgICAgICAgICB0aGlzLnJhbmdlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF5OiB0aGlzLnN0YXJ0U2VsZWN0ZWREYXkuZGF0ZSxcbiAgICAgICAgICAgICAgICBlbmREYXk6IHRoaXMuZW5kU2VsZWN0ZWREYXkuZGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZmQtaW5wdXQtZ3JvdXBcbiAgICBwbGFjZW1lbnQ9XCJhZnRlclwiXG4gICAgZ2x5cGg9XCJjYWxlbmRhclwiXG4gICAgZ2x5cGhBcmlhTGFiZWw9XCJzZWxlY3QgZGF5XCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIGFyaWFMYWJlbGxlZGJ5PVwiZmQtaW5wdXQtZ3JvdXAtaWNvbi1sYWJlbC0yXCJcbiAgICBbYnV0dG9uXT1cInRydWVcIlxuICAgIFtzdGF0ZV09XCJpc1ZhbGlkID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiXG4gICAgW3Nob3dGb2N1c109XCJ0cnVlXCJcbiAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cIm9uT3BlblBvcG92ZXIocG9wb3ZlcilcIlxuICAgIFtuZ01vZGVsXT1cInZhbHVlIHwgZGF0ZVRpbWVUb0NhcHRpb246IGZvcm1hdFBhdHRlcm46Y3VsdHVyZTpzaG93RGF0ZTpzaG93VGltZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DYXB0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4+XG48L2ZkLWlucHV0LWdyb3VwPlxuPGZkLXBvcG92ZXJcbiAgICAjcG9wb3ZlclxuICAgIChpc09wZW5DaGFuZ2UpPVwib25Qb3BvdmVyT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgIFttb2JpbGVdPVwiKGRldmljZVNpemUkIHwgYXN5bmMpID09PSAncydcIlxuPlxuICAgIDxmZC1wb3BvdmVyLWJvZHkgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoJCB8IGFzeW5jXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgbW9udGg7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHNlbGVjdGVkTW9udGgkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHJ0bDogcnRsJCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICB3ZWVrRGF5czogd2Vla0RheXMsXG4gICAgICAgICAgICAgICAgICAgIHdlZWtEYXlzTWluOiB3ZWVrRGF5c01pbixcbiAgICAgICAgICAgICAgICAgICAgdG9kYXk6IHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICBkZXZpY2VTaXplOiBkZXZpY2VTaXplJCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyOiBwb3BvdmVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBmZC1wb3BvdmVyLWJvZHktZm9vdGVyICpuZ0lmPVwic2hvd1RpbWVcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyIFtiYXJEZXNpZ25dPVwiJ2Zvb3RlcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0ICpuZ0lmPVwicnRsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJCdXR0b25zXCI+PC9jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQgKm5nSWY9XCIhcnRsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJCdXR0b25zXCI+PC9jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1wb3BvdmVyLWJvZHk+XG48L2ZkLXBvcG92ZXI+XG48bmctdGVtcGxhdGUgI2Zvb3RlckJ1dHRvbnM+XG4gICAgPGZkLWJ1dHRvbi1iYXIgW2xhYmVsXT1cIidDYW5jZWwnIHwgYmJiVHJhbnNsYXRlXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKHBvcG92ZXIpXCI+PC9mZC1idXR0b24tYmFyPlxuICAgIDxmZC1idXR0b24tYmFyIFtsYWJlbF09XCInT2snIHwgYmJiVHJhbnNsYXRlXCIgZmRUeXBlPVwiZW1waGFzaXplZFwiIChjbGljayk9XCJvbk9rKHBvcG92ZXIpXCI+PC9mZC1idXR0b24tYmFyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAgICNtb250aFxuICAgIGxldC1zZWxlY3RlZE1vbnRoXG4gICAgbGV0LXdpZHRoPVwid2lkdGhcIlxuICAgIGxldC1oZWlnaHQ9XCJoZWlnaHRcIlxuICAgIGxldC1ydGw9XCJydGxcIlxuICAgIGxldC10b2RheT1cInRvZGF5XCJcbiAgICBsZXQtc2hvd0V2ZW50cz1cInNob3dFdmVudHNcIlxuICAgIGxldC1kZXZpY2VTaXplPVwiZGV2aWNlU2l6ZVwiXG4gICAgbGV0LXBvcG92ZXI9XCJwb3BvdmVyXCJcbj5cbiAgICA8ZmQtdG9vbGJhciBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIFtsYWJlbF09XCIoc2hvd0RhdGUgPyAnRGF0ZVJfVG9kYXknIDogJ05vdycpIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblRvZGF5KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0RhdGVcIlxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBbZ2x5cGhdPVwicnRsID8gJ25hdmlnYXRpb24tcmlnaHQtYXJyb3cnIDogJ25hdmlnYXRpb24tbGVmdC1hcnJvdydcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJldlRhcCgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEYXRlXCJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgW2dseXBoXT1cInJ0bCA/ICduYXZpZ2F0aW9uLWxlZnQtYXJyb3cnIDogJ25hdmlnYXRpb24tcmlnaHQtYXJyb3cnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk5leHRUYXAoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXJzLXdyYXBwZXJcIiAqbmdJZj1cInNob3dEYXRlXCIgZmQtdGl0bGUgZmQtdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PT0gJ2RheScgfHwgc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRoJ1wiXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRNb250aC5kYXRlSW5mby5tb250aE5hbWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3Rpb25Nb2RlID0gJ21vbnRoJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRNb250aC5kYXRlSW5mby55ZWFyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZSA9ICd5ZWFyJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZmQtdG9vbGJhcj5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3Rpb25Nb2RlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXItc2VsZWN0aW9uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmbGV4LWdyb3c6IDE7IHdpZHRoOiAzMyVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwic2VsZWN0ZWRNb250aC5kYXRlSW5mby5tb250aE5hbWUgPT09IG1vbnRoID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGlvbk1vZGUgPSAnZGF5Jzsgb25Nb250aFNlbGVjdGVkKG1vbnRoLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3llYXInXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXItc2VsZWN0aW9uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmbGV4LWdyb3c6IDE7IHdpZHRoOiAyNSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cInNlbGVjdGVkTW9udGguZGF0ZUluZm8ueWVhciA9PT0gK3llYXIgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ5ZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3Rpb25Nb2RlID0gJ2RheSc7IG9uWWVhclNlbGVjdGVkKHllYXIpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+XG4gICAgICAgICAgICAgICAgPGJjLWNhbGVuZGFyLW1vbnRoXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVySGVpZ2h0XT1cImhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250YWluZXJXaWR0aF09XCJ3aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW21vbnRoV2Vla3NDb3VudF09XCJzZWxlY3RlZE1vbnRoLndlZWtzQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbd2Vla0RheXNdPVwid2Vla0RheXNcIlxuICAgICAgICAgICAgICAgICAgICBbd2Vla0RheXNNaW5dPVwid2Vla0RheXNNaW5cIlxuICAgICAgICAgICAgICAgICAgICBbdG9kYXldPVwidG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0ZVBpY2tlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzdGFydFNlbGVjdGVkRGF5ID8gc3RhcnRTZWxlY3RlZERheS5kYXRlIDogdmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbZGF5c109XCJzZWxlY3RlZE1vbnRoLmRheXNcIlxuICAgICAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50LCBwb3BvdmVyKVwiXG4gICAgICAgICAgICAgICAgPjwvYmMtY2FsZW5kYXItbW9udGg+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGVyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxmZC10aW1lXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRpbWVWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSAhPT0gJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlTZWNvbmRzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC10aW1lPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@fundamental-ngx/core/bar";
6
+ import * as i3 from "@fundamental-ngx/core/list";
7
+ import * as i4 from "@fundamental-ngx/core/popover";
8
+ import * as i5 from "@fundamental-ngx/platform/button";
9
+ import * as i6 from "../event-preview/event-preview.component";
10
+ import * as i7 from "../day-number-box/day-number-box.component";
11
+ export class DayEventListComponent extends BaseComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.deleteEvent = new EventEmitter();
15
+ this.editEvent = new EventEmitter();
16
+ this.openPopOver = new EventEmitter();
17
+ }
18
+ onClosePopover(popover, popover2) {
19
+ popover.close();
20
+ if (popover2) {
21
+ popover2.close();
22
+ }
23
+ }
24
+ }
25
+ DayEventListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DayEventListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
26
+ DayEventListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: DayEventListComponent, selector: "bc-day-event-list", inputs: { day: "day", deviceSize: "deviceSize", weekDays: "weekDays", calendarFields: "calendarFields", rtl: "rtl", canDelete: "canDelete", canEdit: "canEdit", popover: "popover" }, outputs: { deleteEvent: "deleteEvent", editEvent: "editEvent", openPopOver: "openPopOver" }, usesInheritance: true, ngImport: i0, template: "<div fd-bar [barDesign]=\"'header-with-subheader'\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-button glyph=\"decline\" [buttonType]=\"'transparent'\" (click)=\"onClosePopover(popover)\"></fdp-button>\n </fd-bar-element>\n </div>\n <div fd-bar-middle>\n <fd-bar-element>\n {{ weekDays[day.dayInWeek] }}\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element> </fd-bar-element>\n </div>\n</div>\n<div fd-bar [barDesign]=\"'subheader'\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <bc-day-number-box [day]=\"day\" [isWeekMode]=\"true\"></bc-day-number-box>\n </fd-bar-element>\n </div>\n</div>\n<ul fd-list>\n <li fd-list-item *ngFor=\"let task of day.tasks\" class=\"task-start-end\" (click)=\"popoverPreview.open()\">\n <span [ngClass]=\"{ 'end-day': rtl, 'start-day': !rtl }\" *ngIf=\"task.isMiddle && !task.isStartDay\"></span>\n <span class=\"middle-day\">{{ task.event[calendarFields.Title] }}</span>\n <span\n [ngClass]=\"{ 'start-day': rtl, 'end-day': !rtl }\"\n *ngIf=\"(task.isMiddle || task.isStartDay) && !task.isEndDay\"\n ></span>\n <fd-popover\n #popoverPreview\n placement=\"bottom\"\n [mobile]=\"deviceSize === 's'\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [title]=\"task.event[calendarFields.Title]\"\n >\n <bc-event-preview\n [event]=\"task.event\"\n [calendarFields]=\"calendarFields\"\n [popover]=\"popoverPreview\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [popover2]=\"popover\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-preview>\n </fd-popover>\n </li>\n</ul>\n", styles: [".task-start-end{cursor:pointer}.start-day{width:0;height:0;border-top:10px solid transparent;border-right:10px solid var(--sapButton_Emphasized_BorderColor, #0a6ed1);border-bottom:10px solid transparent}.middle-day{width:100%;min-width:200px;height:20px;background-color:var(--sapButton_Emphasized_Background, #0a6ed1);color:var(--sapButton_Emphasized_TextColor, #fff);text-align:center}.end-day{width:0;height:0;border-top:10px solid transparent;border-left:10px solid var(--sapButton_Emphasized_BorderColor, #0a6ed1);border-bottom:10px solid transparent}.event-list-number-day{width:40px;height:40px;flex-grow:0;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-grow:0!important}.event-list-number-day:hover{color:var(--sapButton_Hover_TextColor, #0854a0);background-color:var(--sapButton_Hover_Background, #ebf5fe);cursor:pointer}::ng-deep .fd-form-item{flex-direction:row!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i2.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i2.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i3.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i3.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "component", type: i4.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i5.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i6.EventPreviewComponent, selector: "bc-event-preview", inputs: ["event", "calendarFields", "popover", "popover2", "canEdit", "canDelete"], outputs: ["deleteEvent", "editEvent"] }, { kind: "component", type: i7.DayNumberBoxComponent, selector: "bc-day-number-box", inputs: ["isWeekMode", "isSingleDay", "day", "isPickerMode", "itemInRange", "isActive"], outputs: ["dayClick", "dayMouseDown", "dayMouseUp", "dayMouseMove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DayEventListComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'bc-day-event-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fd-bar [barDesign]=\"'header-with-subheader'\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-button glyph=\"decline\" [buttonType]=\"'transparent'\" (click)=\"onClosePopover(popover)\"></fdp-button>\n </fd-bar-element>\n </div>\n <div fd-bar-middle>\n <fd-bar-element>\n {{ weekDays[day.dayInWeek] }}\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element> </fd-bar-element>\n </div>\n</div>\n<div fd-bar [barDesign]=\"'subheader'\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <bc-day-number-box [day]=\"day\" [isWeekMode]=\"true\"></bc-day-number-box>\n </fd-bar-element>\n </div>\n</div>\n<ul fd-list>\n <li fd-list-item *ngFor=\"let task of day.tasks\" class=\"task-start-end\" (click)=\"popoverPreview.open()\">\n <span [ngClass]=\"{ 'end-day': rtl, 'start-day': !rtl }\" *ngIf=\"task.isMiddle && !task.isStartDay\"></span>\n <span class=\"middle-day\">{{ task.event[calendarFields.Title] }}</span>\n <span\n [ngClass]=\"{ 'start-day': rtl, 'end-day': !rtl }\"\n *ngIf=\"(task.isMiddle || task.isStartDay) && !task.isEndDay\"\n ></span>\n <fd-popover\n #popoverPreview\n placement=\"bottom\"\n [mobile]=\"deviceSize === 's'\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [title]=\"task.event[calendarFields.Title]\"\n >\n <bc-event-preview\n [event]=\"task.event\"\n [calendarFields]=\"calendarFields\"\n [popover]=\"popoverPreview\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [popover2]=\"popover\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-preview>\n </fd-popover>\n </li>\n</ul>\n", styles: [".task-start-end{cursor:pointer}.start-day{width:0;height:0;border-top:10px solid transparent;border-right:10px solid var(--sapButton_Emphasized_BorderColor, #0a6ed1);border-bottom:10px solid transparent}.middle-day{width:100%;min-width:200px;height:20px;background-color:var(--sapButton_Emphasized_Background, #0a6ed1);color:var(--sapButton_Emphasized_TextColor, #fff);text-align:center}.end-day{width:0;height:0;border-top:10px solid transparent;border-left:10px solid var(--sapButton_Emphasized_BorderColor, #0a6ed1);border-bottom:10px solid transparent}.event-list-number-day{width:40px;height:40px;flex-grow:0;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-grow:0!important}.event-list-number-day:hover{color:var(--sapButton_Hover_TextColor, #0854a0);background-color:var(--sapButton_Hover_Background, #ebf5fe);cursor:pointer}::ng-deep .fd-form-item{flex-direction:row!important}\n"] }]
30
+ }], propDecorators: { day: [{
31
+ type: Input
32
+ }], deviceSize: [{
33
+ type: Input
34
+ }], weekDays: [{
35
+ type: Input
36
+ }], calendarFields: [{
37
+ type: Input
38
+ }], rtl: [{
39
+ type: Input
40
+ }], canDelete: [{
41
+ type: Input
42
+ }], canEdit: [{
43
+ type: Input
44
+ }], popover: [{
45
+ type: Input
46
+ }], deleteEvent: [{
47
+ type: Output
48
+ }], editEvent: [{
49
+ type: Output
50
+ }], openPopOver: [{
51
+ type: Output
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWV2ZW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtY2FsZW5kYXIvc3JjL2xpYi9kYXktZXZlbnQtbGlzdC9kYXktZXZlbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2RheS1ldmVudC1saXN0L2RheS1ldmVudC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEcsT0FBTyxFQUFFLGFBQWEsRUFBdUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBUTFGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBTnhEOztRQWVjLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3BELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztLQVFuRDtJQU5HLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUztRQUM3QixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsSUFBSSxRQUFRLEVBQUU7WUFDVixRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDOztrSEFsQlEscUJBQXFCO3NHQUFyQixxQkFBcUIsbVdDVmxDLGs5REFtREE7MkZEekNhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgQ2FsZW5kYXJGaWVsZHMsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBEYXkgfSBmcm9tICcuLi9tb2RlbHMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYy1kYXktZXZlbnQtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RheS1ldmVudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXktZXZlbnQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERheUV2ZW50TGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGRheTogRGF5O1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IHN0cmluZztcbiAgICBASW5wdXQoKSB3ZWVrRGF5czogc3RyaW5nW107XG4gICAgQElucHV0KCkgY2FsZW5kYXJGaWVsZHM6IENhbGVuZGFyRmllbGRzO1xuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjYW5EZWxldGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2FuRWRpdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwb3BvdmVyOiBhbnk7XG4gICAgQE91dHB1dCgpIGRlbGV0ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5Qb3BPdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBvbkNsb3NlUG9wb3Zlcihwb3BvdmVyLCBwb3BvdmVyMj8pOiB2b2lkIHtcbiAgICAgICAgcG9wb3Zlci5jbG9zZSgpO1xuICAgICAgICBpZiAocG9wb3ZlcjIpIHtcbiAgICAgICAgICAgIHBvcG92ZXIyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGZkLWJhciBbYmFyRGVzaWduXT1cIidoZWFkZXItd2l0aC1zdWJoZWFkZXInXCI+XG4gICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPGZkcC1idXR0b24gZ2x5cGg9XCJkZWNsaW5lXCIgW2J1dHRvblR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJvbkNsb3NlUG9wb3Zlcihwb3BvdmVyKVwiPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIHt7IHdlZWtEYXlzW2RheS5kYXlJbldlZWtdIH19XG4gICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgIDxmZC1iYXItZWxlbWVudD4gPC9mZC1iYXItZWxlbWVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBmZC1iYXIgW2JhckRlc2lnbl09XCInc3ViaGVhZGVyJ1wiPlxuICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cbiAgICAgICAgPGZkLWJhci1lbGVtZW50IFtmdWxsV2lkdGhdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGJjLWRheS1udW1iZXItYm94IFtkYXldPVwiZGF5XCIgW2lzV2Vla01vZGVdPVwidHJ1ZVwiPjwvYmMtZGF5LW51bWJlci1ib3g+XG4gICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjx1bCBmZC1saXN0PlxuICAgIDxsaSBmZC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IHRhc2sgb2YgZGF5LnRhc2tzXCIgY2xhc3M9XCJ0YXNrLXN0YXJ0LWVuZFwiIChjbGljayk9XCJwb3BvdmVyUHJldmlldy5vcGVuKClcIj5cbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnZW5kLWRheSc6IHJ0bCwgJ3N0YXJ0LWRheSc6ICFydGwgfVwiICpuZ0lmPVwidGFzay5pc01pZGRsZSAmJiAhdGFzay5pc1N0YXJ0RGF5XCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pZGRsZS1kYXlcIj57eyB0YXNrLmV2ZW50W2NhbGVuZGFyRmllbGRzLlRpdGxlXSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3N0YXJ0LWRheSc6IHJ0bCwgJ2VuZC1kYXknOiAhcnRsIH1cIlxuICAgICAgICAgICAgKm5nSWY9XCIodGFzay5pc01pZGRsZSB8fCB0YXNrLmlzU3RhcnREYXkpICYmICF0YXNrLmlzRW5kRGF5XCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPGZkLXBvcG92ZXJcbiAgICAgICAgICAgICNwb3BvdmVyUHJldmlld1xuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcbiAgICAgICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJ0YXNrLmV2ZW50W2NhbGVuZGFyRmllbGRzLlRpdGxlXVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxiYy1ldmVudC1wcmV2aWV3XG4gICAgICAgICAgICAgICAgW2V2ZW50XT1cInRhc2suZXZlbnRcIlxuICAgICAgICAgICAgICAgIFtjYWxlbmRhckZpZWxkc109XCJjYWxlbmRhckZpZWxkc1wiXG4gICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwicG9wb3ZlclByZXZpZXdcIlxuICAgICAgICAgICAgICAgIFtjYW5EZWxldGVdPVwiY2FuRGVsZXRlXCJcbiAgICAgICAgICAgICAgICBbY2FuRWRpdF09XCJjYW5FZGl0XCJcbiAgICAgICAgICAgICAgICBbcG9wb3ZlcjJdPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGVkaXRFdmVudCk9XCJlZGl0RXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2JjLWV2ZW50LXByZXZpZXc+XG4gICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICA8L2xpPlxuPC91bD5cbiJdfQ==