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.
- package/README.md +25 -0
- package/esm2020/barsa-calendar.mjs +5 -0
- package/esm2020/lib/barsa-calendar.module.mjs +106 -0
- package/esm2020/lib/calendar-container/calendar-container.component.mjs +190 -0
- package/esm2020/lib/calendar-header/calendar-header.component.mjs +61 -0
- package/esm2020/lib/calendar-list/calendar-list.component.mjs +19 -0
- package/esm2020/lib/calendar-list-container/calendar-list-container.component.mjs +30 -0
- package/esm2020/lib/calendar-list-item/calendar-list-item.component.mjs +14 -0
- package/esm2020/lib/calendar-month/calendar-month.component.mjs +244 -0
- package/esm2020/lib/calendar-selection-days/calendar-selection-days.component.mjs +193 -0
- package/esm2020/lib/calendar-week/calendar-week.component.mjs +182 -0
- package/esm2020/lib/constants.mjs +4 -0
- package/esm2020/lib/date-time-picker/date-time-picker.component.mjs +324 -0
- package/esm2020/lib/day-event-list/day-event-list.component.mjs +53 -0
- package/esm2020/lib/day-number-box/day-number-box.component.mjs +105 -0
- package/esm2020/lib/days-in-week.pipe.mjs +17 -0
- package/esm2020/lib/equal-date.pipe.mjs +23 -0
- package/esm2020/lib/event-button/event-button.component.mjs +70 -0
- package/esm2020/lib/event-date.pipe.mjs +24 -0
- package/esm2020/lib/event-preview/event-preview.component.mjs +60 -0
- package/esm2020/lib/event-time.pipe.mjs +22 -0
- package/esm2020/lib/from-to-time.pipe.mjs +23 -0
- package/esm2020/lib/models.mjs +14 -0
- package/esm2020/lib/month-days/month-days.component.mjs +220 -0
- package/esm2020/lib/services/calendar.service.mjs +610 -0
- package/esm2020/public-api.mjs +21 -0
- package/fesm2015/barsa-calendar.mjs +2447 -0
- package/fesm2015/barsa-calendar.mjs.map +1 -0
- package/fesm2020/barsa-calendar.mjs +2455 -0
- package/fesm2020/barsa-calendar.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/barsa-calendar.module.d.ts +33 -0
- package/lib/calendar-container/calendar-container.component.d.ts +73 -0
- package/lib/calendar-header/calendar-header.component.d.ts +29 -0
- package/lib/calendar-list/calendar-list.component.d.ts +8 -0
- package/lib/calendar-list-container/calendar-list-container.component.d.ts +14 -0
- package/lib/calendar-list-item/calendar-list-item.component.d.ts +7 -0
- package/lib/calendar-month/calendar-month.component.d.ts +70 -0
- package/lib/calendar-selection-days/calendar-selection-days.component.d.ts +47 -0
- package/lib/calendar-week/calendar-week.component.d.ts +57 -0
- package/lib/constants.d.ts +1 -0
- package/lib/date-time-picker/date-time-picker.component.d.ts +98 -0
- package/lib/day-event-list/day-event-list.component.d.ts +20 -0
- package/lib/day-number-box/day-number-box.component.d.ts +30 -0
- package/lib/days-in-week.pipe.d.ts +9 -0
- package/lib/equal-date.pipe.d.ts +8 -0
- package/lib/event-button/event-button.component.d.ts +26 -0
- package/lib/event-date.pipe.d.ts +9 -0
- package/lib/event-preview/event-preview.component.d.ts +19 -0
- package/lib/event-time.pipe.d.ts +9 -0
- package/lib/from-to-time.pipe.d.ts +9 -0
- package/lib/models.d.ts +107 -0
- package/lib/month-days/month-days.component.d.ts +69 -0
- package/lib/services/calendar.service.d.ts +70 -0
- package/package.json +31 -0
- package/public-api.d.ts +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# BarsaCalendar
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.1.2.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project BarsaCalendar` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project BarsaCalendar`.
|
|
8
|
+
|
|
9
|
+
> Note: Don't forget to add `--project BarsaCalendar` or else it will be added to the default project in your `angular.json` file.
|
|
10
|
+
|
|
11
|
+
## Build
|
|
12
|
+
|
|
13
|
+
Run `ng build BarsaCalendar` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
14
|
+
|
|
15
|
+
## Publishing
|
|
16
|
+
|
|
17
|
+
After building your library with `ng build BarsaCalendar`, go to the dist folder `cd dist/barsa-calendar` and run `npm publish`.
|
|
18
|
+
|
|
19
|
+
## Running unit tests
|
|
20
|
+
|
|
21
|
+
Run `ng test BarsaCalendar` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
22
|
+
|
|
23
|
+
## Further help
|
|
24
|
+
|
|
25
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvYmFyc2EtY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { CommonModule, TitleCasePipe } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { FundamentalNgxPlatformModule } from '@fundamental-ngx/platform';
|
|
5
|
+
import { FundamentalNgxCoreModule } from '@fundamental-ngx/core';
|
|
6
|
+
import { CardModule } from '@fundamental-ngx/core/card';
|
|
7
|
+
import { QuickViewModule } from '@fundamental-ngx/core/quick-view';
|
|
8
|
+
import { PopoverModule } from '@fundamental-ngx/core/popover';
|
|
9
|
+
import { BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
|
|
10
|
+
import { CalendarContainerComponent } from './calendar-container/calendar-container.component';
|
|
11
|
+
import { CalendarListComponent } from './calendar-list/calendar-list.component';
|
|
12
|
+
import { CalendarListContainerComponent } from './calendar-list-container/calendar-list-container.component';
|
|
13
|
+
import { CalendarListItemComponent } from './calendar-list-item/calendar-list-item.component';
|
|
14
|
+
import { CalendarWeekComponent } from './calendar-week/calendar-week.component';
|
|
15
|
+
import { CalendarMonthComponent } from './calendar-month/calendar-month.component';
|
|
16
|
+
import { CalendarService } from './services/calendar.service';
|
|
17
|
+
import { MonthDaysComponent } from './month-days/month-days.component';
|
|
18
|
+
import { DaysInWeekPipe } from './days-in-week.pipe';
|
|
19
|
+
import { EventDatePipe } from './event-date.pipe';
|
|
20
|
+
import { EventTimePipe } from './event-time.pipe';
|
|
21
|
+
import { FromToTimePipe } from './from-to-time.pipe';
|
|
22
|
+
import { EqualDatePipe } from './equal-date.pipe';
|
|
23
|
+
import { CalendarHeaderComponent } from './calendar-header/calendar-header.component';
|
|
24
|
+
import { EventPreviewComponent } from './event-preview/event-preview.component';
|
|
25
|
+
import { DayNumberBoxComponent } from './day-number-box/day-number-box.component';
|
|
26
|
+
import { EventButtonComponent } from './event-button/event-button.component';
|
|
27
|
+
import { DayEventListComponent } from './day-event-list/day-event-list.component';
|
|
28
|
+
import { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';
|
|
29
|
+
import { CalendarSelectionDaysComponent } from './calendar-selection-days/calendar-selection-days.component';
|
|
30
|
+
import * as i0 from "@angular/core";
|
|
31
|
+
const components = [
|
|
32
|
+
CalendarContainerComponent,
|
|
33
|
+
CalendarListComponent,
|
|
34
|
+
CalendarListContainerComponent,
|
|
35
|
+
CalendarListItemComponent,
|
|
36
|
+
CalendarWeekComponent,
|
|
37
|
+
CalendarMonthComponent,
|
|
38
|
+
MonthDaysComponent,
|
|
39
|
+
CalendarHeaderComponent,
|
|
40
|
+
EventPreviewComponent,
|
|
41
|
+
DayNumberBoxComponent,
|
|
42
|
+
EventButtonComponent,
|
|
43
|
+
DayEventListComponent
|
|
44
|
+
];
|
|
45
|
+
const pipes = [DaysInWeekPipe, EventDatePipe, EventTimePipe, FromToTimePipe, EqualDatePipe];
|
|
46
|
+
export class BarsaCalendarModule {
|
|
47
|
+
}
|
|
48
|
+
BarsaCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
49
|
+
BarsaCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: BarsaCalendarModule, declarations: [CalendarContainerComponent,
|
|
50
|
+
CalendarListComponent,
|
|
51
|
+
CalendarListContainerComponent,
|
|
52
|
+
CalendarListItemComponent,
|
|
53
|
+
CalendarWeekComponent,
|
|
54
|
+
CalendarMonthComponent,
|
|
55
|
+
MonthDaysComponent,
|
|
56
|
+
CalendarHeaderComponent,
|
|
57
|
+
EventPreviewComponent,
|
|
58
|
+
DayNumberBoxComponent,
|
|
59
|
+
EventButtonComponent,
|
|
60
|
+
DayEventListComponent, DaysInWeekPipe, EventDatePipe, EventTimePipe, FromToTimePipe, EqualDatePipe, DateTimePickerComponent, CalendarSelectionDaysComponent], imports: [CommonModule,
|
|
61
|
+
FormsModule,
|
|
62
|
+
BarsaNovinRayCoreModule,
|
|
63
|
+
FundamentalNgxCoreModule,
|
|
64
|
+
FundamentalNgxPlatformModule,
|
|
65
|
+
PopoverModule,
|
|
66
|
+
CardModule,
|
|
67
|
+
QuickViewModule], exports: [CalendarContainerComponent,
|
|
68
|
+
CalendarListComponent,
|
|
69
|
+
CalendarListContainerComponent,
|
|
70
|
+
CalendarListItemComponent,
|
|
71
|
+
CalendarWeekComponent,
|
|
72
|
+
CalendarMonthComponent,
|
|
73
|
+
MonthDaysComponent,
|
|
74
|
+
CalendarHeaderComponent,
|
|
75
|
+
EventPreviewComponent,
|
|
76
|
+
DayNumberBoxComponent,
|
|
77
|
+
EventButtonComponent,
|
|
78
|
+
DayEventListComponent, DateTimePickerComponent, CalendarSelectionDaysComponent] });
|
|
79
|
+
BarsaCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaCalendarModule, providers: [TitleCasePipe, CalendarService, ...pipes], imports: [CommonModule,
|
|
80
|
+
FormsModule,
|
|
81
|
+
BarsaNovinRayCoreModule,
|
|
82
|
+
FundamentalNgxCoreModule,
|
|
83
|
+
FundamentalNgxPlatformModule,
|
|
84
|
+
PopoverModule,
|
|
85
|
+
CardModule,
|
|
86
|
+
QuickViewModule] });
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaCalendarModule, decorators: [{
|
|
88
|
+
type: NgModule,
|
|
89
|
+
args: [{
|
|
90
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
91
|
+
imports: [
|
|
92
|
+
CommonModule,
|
|
93
|
+
FormsModule,
|
|
94
|
+
BarsaNovinRayCoreModule,
|
|
95
|
+
FundamentalNgxCoreModule,
|
|
96
|
+
FundamentalNgxPlatformModule,
|
|
97
|
+
PopoverModule,
|
|
98
|
+
CardModule,
|
|
99
|
+
QuickViewModule
|
|
100
|
+
],
|
|
101
|
+
declarations: [...components, ...pipes, DateTimePickerComponent, CalendarSelectionDaysComponent],
|
|
102
|
+
providers: [TitleCasePipe, CalendarService, ...pipes],
|
|
103
|
+
exports: [...components, DateTimePickerComponent, CalendarSelectionDaysComponent]
|
|
104
|
+
}]
|
|
105
|
+
}] });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtY2FsZW5kYXIvc3JjL2xpYi9iYXJzYS1jYWxlbmRhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQs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LENBQUM7b0JBQ2hHLFNBQVMsRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixDQUFDO2lCQUNwRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgRnVuZGFtZW50YWxOZ3hQbGF0Zm9ybU1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xyXG5pbXBvcnQgeyBGdW5kYW1lbnRhbE5neENvcmVNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5pbXBvcnQgeyBDYXJkTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NhcmQnO1xyXG5pbXBvcnQgeyBRdWlja1ZpZXdNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcXVpY2stdmlldyc7XHJcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XHJcblxyXG5pbXBvcnQgeyBCYXJzYU5vdmluUmF5Q29yZU1vZHVsZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1jb250YWluZXIvY2FsZW5kYXItY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbGVuZGFyTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItbGlzdC9jYWxlbmRhci1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbGVuZGFyTGlzdENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItbGlzdC1jb250YWluZXIvY2FsZW5kYXItbGlzdC1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItbGlzdC1pdGVtL2NhbGVuZGFyLWxpc3QtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhcldlZWtDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLXdlZWsvY2FsZW5kYXItd2Vlay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NhbGVuZGFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb250aERheXNDb21wb25lbnQgfSBmcm9tICcuL21vbnRoLWRheXMvbW9udGgtZGF5cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXlzSW5XZWVrUGlwZSB9IGZyb20gJy4vZGF5cy1pbi13ZWVrLnBpcGUnO1xyXG5pbXBvcnQgeyBFdmVudERhdGVQaXBlIH0gZnJvbSAnLi9ldmVudC1kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBFdmVudFRpbWVQaXBlIH0gZnJvbSAnLi9ldmVudC10aW1lLnBpcGUnO1xyXG5pbXBvcnQgeyBGcm9tVG9UaW1lUGlwZSB9IGZyb20gJy4vZnJvbS10by10aW1lLnBpcGUnO1xyXG5pbXBvcnQgeyBFcXVhbERhdGVQaXBlIH0gZnJvbSAnLi9lcXVhbC1kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDYWxlbmRhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFdmVudFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2V2ZW50LXByZXZpZXcvZXZlbnQtcHJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXlOdW1iZXJCb3hDb21wb25lbnQgfSBmcm9tICcuL2RheS1udW1iZXItYm94L2RheS1udW1iZXItYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV2ZW50QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9ldmVudC1idXR0b24vZXZlbnQtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERheUV2ZW50TGlzdENvbXBvbmVudCB9IGZyb20gJy4vZGF5LWV2ZW50LWxpc3QvZGF5LWV2ZW50LWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNlbGVjdGlvbkRheXNDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLXNlbGVjdGlvbi1kYXlzL2NhbGVuZGFyLXNlbGVjdGlvbi1kYXlzLmNvbXBvbmVudCc7XHJcblxyXG5jb25zdCBjb21wb25lbnRzID0gW1xyXG4gICAgQ2FsZW5kYXJDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBDYWxlbmRhckxpc3RDb21wb25lbnQsXHJcbiAgICBDYWxlbmRhckxpc3RDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBDYWxlbmRhckxpc3RJdGVtQ29tcG9uZW50LFxyXG4gICAgQ2FsZW5kYXJXZWVrQ29tcG9uZW50LFxyXG4gICAgQ2FsZW5kYXJNb250aENvbXBvbmVudCxcclxuICAgIE1vbnRoRGF5c0NvbXBvbmVudCxcclxuICAgIENhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxyXG4gICAgRXZlbnRQcmV2aWV3Q29tcG9uZW50LFxyXG4gICAgRGF5TnVtYmVyQm94Q29tcG9uZW50LFxyXG4gICAgRXZlbnRCdXR0b25Db21wb25lbnQsXHJcbiAgICBEYXlFdmVudExpc3RDb21wb25lbnRcclxuXTtcclxuY29uc3QgcGlwZXMgPSBbRGF5c0luV2Vla1BpcGUsIEV2ZW50RGF0ZVBpcGUsIEV2ZW50VGltZVBpcGUsIEZyb21Ub1RpbWVQaXBlLCBFcXVhbERhdGVQaXBlXTtcclxuQE5nTW9kdWxlKHtcclxuICAgIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgQmFyc2FOb3ZpblJheUNvcmVNb2R1bGUsXHJcbiAgICAgICAgRnVuZGFtZW50YWxOZ3hDb3JlTW9kdWxlLFxyXG4gICAgICAgIEZ1bmRhbWVudGFsTmd4UGxhdGZvcm1Nb2R1bGUsXHJcbiAgICAgICAgUG9wb3Zlck1vZHVsZSxcclxuICAgICAgICBDYXJkTW9kdWxlLFxyXG4gICAgICAgIFF1aWNrVmlld01vZHVsZVxyXG4gICAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogWy4uLmNvbXBvbmVudHMsIC4uLnBpcGVzLCBEYXRlVGltZVBpY2tlckNvbXBvbmVudCwgQ2FsZW5kYXJTZWxlY3Rpb25EYXlzQ29tcG9uZW50XSxcclxuICAgIHByb3ZpZGVyczogW1RpdGxlQ2FzZVBpcGUsIENhbGVuZGFyU2VydmljZSwgLi4ucGlwZXNdLFxyXG4gICAgZXhwb3J0czogWy4uLmNvbXBvbmVudHMsIERhdGVUaW1lUGlja2VyQ29tcG9uZW50LCBDYWxlbmRhclNlbGVjdGlvbkRheXNDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYUNhbGVuZGFyTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, of } from 'rxjs';
|
|
3
|
+
import { map, switchMap, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { ReportViewBaseComponent, DateService, LogService, getDateService } from 'barsa-novin-ray-core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "barsa-novin-ray-core";
|
|
8
|
+
import * as i3 from "../services/calendar.service";
|
|
9
|
+
import * as i4 from "../calendar-list-container/calendar-list-container.component";
|
|
10
|
+
import * as i5 from "../calendar-week/calendar-week.component";
|
|
11
|
+
import * as i6 from "../calendar-month/calendar-month.component";
|
|
12
|
+
import * as i7 from "../calendar-header/calendar-header.component";
|
|
13
|
+
export class CalendarContainerComponent extends ReportViewBaseComponent {
|
|
14
|
+
constructor(_titleCase, _bbbTranslate, _calendarService, _dateService, _el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService) {
|
|
15
|
+
super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService);
|
|
16
|
+
this._titleCase = _titleCase;
|
|
17
|
+
this._bbbTranslate = _bbbTranslate;
|
|
18
|
+
this._calendarService = _calendarService;
|
|
19
|
+
this._dateService = _dateService;
|
|
20
|
+
this._el = _el;
|
|
21
|
+
this._cdr = _cdr;
|
|
22
|
+
this._renderer2 = _renderer2;
|
|
23
|
+
this._findColumnByDbName = _findColumnByDbName;
|
|
24
|
+
this._ulvMainService = _ulvMainService;
|
|
25
|
+
this._portalService = _portalService;
|
|
26
|
+
this.deleteTask = new EventEmitter();
|
|
27
|
+
this.editTask = new EventEmitter();
|
|
28
|
+
this.daySelect = new EventEmitter();
|
|
29
|
+
this.loadData = new EventEmitter();
|
|
30
|
+
this.todayIndex = -1;
|
|
31
|
+
this.eventMoDataList$ = new BehaviorSubject([]);
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
super.ngOnInit();
|
|
35
|
+
this.prepare();
|
|
36
|
+
this._setWidthAndHeight();
|
|
37
|
+
this.prepareMoDataList(this.moDataList);
|
|
38
|
+
this.selectedMonth$.pipe(takeUntil(this._onDestroy$)).subscribe((month) => {
|
|
39
|
+
this.loadData.emit({
|
|
40
|
+
start: month.days[0].date,
|
|
41
|
+
end: month.days[month.days.length - 1].date
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
// this.setTasks(this.calendars, this.moDataList, this.calendarFields);
|
|
45
|
+
}
|
|
46
|
+
ngOnChanges(changes) {
|
|
47
|
+
super.ngOnChanges(changes);
|
|
48
|
+
const { moDataList, deviceSize } = changes;
|
|
49
|
+
if (moDataList && !moDataList.firstChange) {
|
|
50
|
+
this.prepareMoDataList(changes.moDataList.currentValue);
|
|
51
|
+
this._cdr.detectChanges();
|
|
52
|
+
}
|
|
53
|
+
if (deviceSize && !deviceSize.firstChange) {
|
|
54
|
+
this._setWidthAndHeight();
|
|
55
|
+
this._cdr.detectChanges();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
onDayClick(day) {
|
|
59
|
+
this._calendarService.setMode('day', day);
|
|
60
|
+
}
|
|
61
|
+
onShowTask() { }
|
|
62
|
+
onSlideChange(selected) {
|
|
63
|
+
this._calendarService.setSelected(selected);
|
|
64
|
+
}
|
|
65
|
+
onMonthCarouselLoaded({ object }) {
|
|
66
|
+
object.selectedPage = 1;
|
|
67
|
+
}
|
|
68
|
+
onToday() {
|
|
69
|
+
this._calendarService.gotoToday();
|
|
70
|
+
}
|
|
71
|
+
onModeChange(mode) {
|
|
72
|
+
this._calendarService.setMode(mode);
|
|
73
|
+
}
|
|
74
|
+
onRangeChange(e) {
|
|
75
|
+
this._calendarService.rangeSelect(e.startDay, e.endDay, e.monthInfo);
|
|
76
|
+
}
|
|
77
|
+
onPrevTap() {
|
|
78
|
+
// this.gotoPage(this.monthCarouselView.nativeElement.selectedPage - 1);
|
|
79
|
+
this._calendarService.loadPrevious();
|
|
80
|
+
}
|
|
81
|
+
onNextTap() {
|
|
82
|
+
this._calendarService.loadNext();
|
|
83
|
+
// this.gotoPage(this.monthCarouselView.nativeElement.selectedPage + 1);
|
|
84
|
+
}
|
|
85
|
+
onSelectedChange(day) {
|
|
86
|
+
this.selectedDay = { ...day };
|
|
87
|
+
}
|
|
88
|
+
prepareMoDataList(moDataList) {
|
|
89
|
+
this.eventMoDataList$.next(moDataList.map((event) => ({
|
|
90
|
+
...event,
|
|
91
|
+
id: event.Id,
|
|
92
|
+
$StartDateInfo: this._dateService.getDateInfo(event[this.calendarFields.StartDate]),
|
|
93
|
+
$EndDateInfo: this._dateService.getDateInfo(event[this.calendarFields.EndDate])
|
|
94
|
+
})));
|
|
95
|
+
}
|
|
96
|
+
addTd(table, tr, event, colSpan) {
|
|
97
|
+
const colSpanCount = tr.length > 0 ? tr.map((c) => c.colSpan).reduce((a, b) => a + b) > 6 : 0;
|
|
98
|
+
if (colSpanCount) {
|
|
99
|
+
table.push(tr);
|
|
100
|
+
tr = [];
|
|
101
|
+
}
|
|
102
|
+
tr.push({ type: 'td', colSpan, event });
|
|
103
|
+
}
|
|
104
|
+
prepare() {
|
|
105
|
+
this.weekDaysMin = this._calendarService.weekDaysMin();
|
|
106
|
+
this.weekDays = this._calendarService.weekDays();
|
|
107
|
+
this.selectedMonth$ = this._calendarService.selected$;
|
|
108
|
+
this.days$ = this._calendarService.days$;
|
|
109
|
+
this.today = this._calendarService.today;
|
|
110
|
+
this.mode$ = this._calendarService.mode$;
|
|
111
|
+
this.monthWeeksCount$ = this.mode$.pipe(map((mode) => {
|
|
112
|
+
if (mode === 'month') {
|
|
113
|
+
return this._calendarService.selectedMonth.weeksCount;
|
|
114
|
+
}
|
|
115
|
+
return 0;
|
|
116
|
+
}));
|
|
117
|
+
this.modeTitle$ = combineLatest([this.days$, this.mode$]).pipe(takeUntil(this._onDestroy$), switchMap(([, mode]) => {
|
|
118
|
+
if (mode === 'customMonth') {
|
|
119
|
+
return of(`${this._calendarService.weeksCount} ${this._bbbTranslate.transform('Week')}`);
|
|
120
|
+
}
|
|
121
|
+
return of(this._bbbTranslate.transform(this._titleCase.transform(mode)));
|
|
122
|
+
}));
|
|
123
|
+
this.weekModeDays$ = this._calendarService.weekModeDays$;
|
|
124
|
+
this._calendarService.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe((calendars) => {
|
|
125
|
+
const eventCalendars = [...calendars];
|
|
126
|
+
// eventCalendars = eventCalendars.splice(this.selectedIndex, 3);
|
|
127
|
+
this.calendars = eventCalendars;
|
|
128
|
+
// if (this.monthCarouselView) {
|
|
129
|
+
// this.monthCarouselView.nativeElement.selectedPage = 1;
|
|
130
|
+
// }
|
|
131
|
+
});
|
|
132
|
+
// .pipe(takeUntil(this._onDestroy$))
|
|
133
|
+
// .subscribe((todayIndex) => {
|
|
134
|
+
// this.selectedIndex = this.todayIndex = todayIndex;
|
|
135
|
+
// this.gotoPage(this.todayIndex);
|
|
136
|
+
// });
|
|
137
|
+
this.title$ = combineLatest([this.weekModeDays$, this.selectedMonth$, this.days$, this.mode$]).pipe(takeUntil(this._onDestroy$), switchMap(([weekModeDays, monthInfo, days, mode]) => {
|
|
138
|
+
let monthName = monthInfo.dateInfo.monthName;
|
|
139
|
+
const year = monthInfo.dateInfo.strYear;
|
|
140
|
+
if (mode !== 'month') {
|
|
141
|
+
let firstDayInfo;
|
|
142
|
+
let lastDayInfo;
|
|
143
|
+
const daysTemp = mode === 'customMonth' ? days : weekModeDays;
|
|
144
|
+
if (daysTemp.length > 0) {
|
|
145
|
+
firstDayInfo = daysTemp[0];
|
|
146
|
+
lastDayInfo = daysTemp[daysTemp.length - 1];
|
|
147
|
+
monthName = firstDayInfo.monthName;
|
|
148
|
+
if (firstDayInfo.month !== lastDayInfo.month) {
|
|
149
|
+
monthName = `${firstDayInfo.monthName} -
|
|
150
|
+
${lastDayInfo.monthName}`;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return of(`${monthName} ${year}`);
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
_setWidthAndHeight() {
|
|
158
|
+
this.width = this._el.nativeElement.offsetWidth;
|
|
159
|
+
this.height = this._el.nativeElement.offsetHeight - 45;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
CalendarContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarContainerComponent, deps: [{ token: i1.TitleCasePipe }, { token: i2.BbbTranslatePipe }, { token: i3.CalendarService }, { token: i2.DateService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i2.FindColumnByDbNamePipe }, { token: i2.UlvMainService }, { token: i2.PortalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
+
CalendarContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CalendarContainerComponent, selector: "bc-calendar-container", inputs: { calendarFields: "calendarFields" }, outputs: { deleteTask: "deleteTask", editTask: "editTask", daySelect: "daySelect", loadData: "loadData" }, providers: [
|
|
164
|
+
{
|
|
165
|
+
provide: DateService,
|
|
166
|
+
useFactory: getDateService,
|
|
167
|
+
deps: [LogService]
|
|
168
|
+
}
|
|
169
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<bc-calendar-header\n [monthInfo]=\"(selectedMonth$ | async)!!\"\n [weekModeDays]=\"(weekModeDays$ | async)!!\"\n [rtl]=\"rtl\"\n [mode]=\"(mode$ | async)!!\"\n [modeTitle]=\"(modeTitle$ | async)!!\"\n [title]=\"(title$ | async)!!\"\n (modeChange)=\"onModeChange($event)\"\n (prevTap)=\"onPrevTap()\"\n (nextTap)=\"onNextTap()\"\n (today)=\"onToday()\"\n (rangeChange)=\"onRangeChange($event)\"\n>\n</bc-calendar-header>\n\n<ng-container [ngSwitch]=\"mode$ | async\">\n <ng-container *ngSwitchCase=\"'week'\">\n <ng-container\n *ngTemplateOutlet=\"\n weekCalendar;\n context: {\n $implicit: selectedMonth$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n weekModeDays: weekModeDays$ | async,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'day'\">\n <ng-container\n *ngTemplateOutlet=\"\n weekCalendar;\n context: {\n $implicit: selectedMonth$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n weekModeDays: weekModeDays$ | async,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\"></ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"\n monthCalendar;\n context: {\n $implicit: days$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n monthWeeksCount: monthWeeksCount$ | async,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template\n #monthCalendar\n let-days\n let-moDataList=\"moDataList\"\n let-width=\"width\"\n let-height=\"height\"\n let-calendarFields=\"calendarFields\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-monthWeeksCount=\"monthWeeksCount\"\n let-access=\"access\"\n>\n <bc-calendar-month\n [style.width]=\"width\"\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\n [containerWidth]=\"width\"\n [calendarFields]=\"calendarFields\"\n [moDataList]=\"moDataList\"\n [monthWeeksCount]=\"monthWeeksCount\"\n [rtl]=\"rtl\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [showEvents]=\"showEvents\"\n [days]=\"days\"\n [canAdd]=\"access.Add\"\n [canEdit]=\"access.Edit\"\n [canDelete]=\"access.Delete\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event)\"\n (showEvent)=\"onShowTask()\"\n (deleteEvent)=\"deleteTask.emit($event)\"\n (editEvent)=\"editTask.emit($event)\"\n (daySelect)=\"daySelect.emit($event)\"\n ></bc-calendar-month>\n</ng-template>\n\n<ng-template #listCalendar>\n <bc-calendar-list-container\n [showEvents]=\"showEvents\"\n [selectedDay]=\"selectedDay\"\n [calendarFields]=\"calendarFields\"\n (showEventsTap)=\"showEvents = !showEvents\"\n ></bc-calendar-list-container>\n</ng-template>\n\n<ng-template\n #weekCalendar\n let-selectedMonth\n let-moDataList=\"moDataList\"\n let-width=\"width\"\n let-height=\"height\"\n let-calendarFields=\"calendarFields\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-weekModeDays=\"weekModeDays\"\n let-access=\"access\"\n>\n <bc-calendar-week\n [style.width]=\"width\"\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\n [containerWidth]=\"width\"\n [inDialog]=\"inDialog\"\n [calendarFields]=\"calendarFields\"\n [moDataList]=\"moDataList\"\n [rtl]=\"rtl\"\n [canAdd]=\"access.Add\"\n [canEdit]=\"access.Edit\"\n [canDelete]=\"access.Delete\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [showEvents]=\"showEvents\"\n [days]=\"weekModeDays\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event)\"\n (showEvent)=\"onShowTask()\"\n (deleteEvent)=\"deleteTask.emit($event)\"\n (editEvent)=\"editTask.emit($event)\"\n (daySelect)=\"daySelect.emit($event)\"\n ></bc-calendar-week>\n</ng-template>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.CalendarListContainerComponent, selector: "bc-calendar-list-container", inputs: ["view", "reportItemComponentName", "showEvents", "selectedDay", "calendarFields"], outputs: ["showEventsTap"] }, { kind: "component", type: i5.CalendarWeekComponent, selector: "bc-calendar-week", inputs: ["weekDays", "weekDaysMin", "today", "containerHeight", "calendarFields", "rtl", "inDialog", "deviceSize", "moDataList", "days", "canDelete", "canAdd", "canEdit"], outputs: ["editEvent", "deleteEvent", "showEvent", "daySelect", "dayClick"] }, { kind: "component", type: i6.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: "component", type: i7.CalendarHeaderComponent, selector: "bc-calendar-header", inputs: ["monthInfo", "weekModeDays", "hideMode", "modeTitle", "title", "rtl", "mode"], outputs: ["prevTap", "nextTap", "modeChange", "rangeChange", "today"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarContainerComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'bc-calendar-container', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
173
|
+
{
|
|
174
|
+
provide: DateService,
|
|
175
|
+
useFactory: getDateService,
|
|
176
|
+
deps: [LogService]
|
|
177
|
+
}
|
|
178
|
+
], template: "<bc-calendar-header\n [monthInfo]=\"(selectedMonth$ | async)!!\"\n [weekModeDays]=\"(weekModeDays$ | async)!!\"\n [rtl]=\"rtl\"\n [mode]=\"(mode$ | async)!!\"\n [modeTitle]=\"(modeTitle$ | async)!!\"\n [title]=\"(title$ | async)!!\"\n (modeChange)=\"onModeChange($event)\"\n (prevTap)=\"onPrevTap()\"\n (nextTap)=\"onNextTap()\"\n (today)=\"onToday()\"\n (rangeChange)=\"onRangeChange($event)\"\n>\n</bc-calendar-header>\n\n<ng-container [ngSwitch]=\"mode$ | async\">\n <ng-container *ngSwitchCase=\"'week'\">\n <ng-container\n *ngTemplateOutlet=\"\n weekCalendar;\n context: {\n $implicit: selectedMonth$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n weekModeDays: weekModeDays$ | async,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'day'\">\n <ng-container\n *ngTemplateOutlet=\"\n weekCalendar;\n context: {\n $implicit: selectedMonth$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n weekModeDays: weekModeDays$ | async,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\"></ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"\n monthCalendar;\n context: {\n $implicit: days$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n monthWeeksCount: monthWeeksCount$ | async,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template\n #monthCalendar\n let-days\n let-moDataList=\"moDataList\"\n let-width=\"width\"\n let-height=\"height\"\n let-calendarFields=\"calendarFields\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-monthWeeksCount=\"monthWeeksCount\"\n let-access=\"access\"\n>\n <bc-calendar-month\n [style.width]=\"width\"\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\n [containerWidth]=\"width\"\n [calendarFields]=\"calendarFields\"\n [moDataList]=\"moDataList\"\n [monthWeeksCount]=\"monthWeeksCount\"\n [rtl]=\"rtl\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [showEvents]=\"showEvents\"\n [days]=\"days\"\n [canAdd]=\"access.Add\"\n [canEdit]=\"access.Edit\"\n [canDelete]=\"access.Delete\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event)\"\n (showEvent)=\"onShowTask()\"\n (deleteEvent)=\"deleteTask.emit($event)\"\n (editEvent)=\"editTask.emit($event)\"\n (daySelect)=\"daySelect.emit($event)\"\n ></bc-calendar-month>\n</ng-template>\n\n<ng-template #listCalendar>\n <bc-calendar-list-container\n [showEvents]=\"showEvents\"\n [selectedDay]=\"selectedDay\"\n [calendarFields]=\"calendarFields\"\n (showEventsTap)=\"showEvents = !showEvents\"\n ></bc-calendar-list-container>\n</ng-template>\n\n<ng-template\n #weekCalendar\n let-selectedMonth\n let-moDataList=\"moDataList\"\n let-width=\"width\"\n let-height=\"height\"\n let-calendarFields=\"calendarFields\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-weekModeDays=\"weekModeDays\"\n let-access=\"access\"\n>\n <bc-calendar-week\n [style.width]=\"width\"\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\n [containerWidth]=\"width\"\n [inDialog]=\"inDialog\"\n [calendarFields]=\"calendarFields\"\n [moDataList]=\"moDataList\"\n [rtl]=\"rtl\"\n [canAdd]=\"access.Add\"\n [canEdit]=\"access.Edit\"\n [canDelete]=\"access.Delete\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [showEvents]=\"showEvents\"\n [days]=\"weekModeDays\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event)\"\n (showEvent)=\"onShowTask()\"\n (deleteEvent)=\"deleteTask.emit($event)\"\n (editEvent)=\"editTask.emit($event)\"\n (daySelect)=\"daySelect.emit($event)\"\n ></bc-calendar-week>\n</ng-template>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
179
|
+
}], ctorParameters: function () { return [{ type: i1.TitleCasePipe }, { type: i2.BbbTranslatePipe }, { type: i3.CalendarService }, { type: i2.DateService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i2.FindColumnByDbNamePipe }, { type: i2.UlvMainService }, { type: i2.PortalService }]; }, propDecorators: { calendarFields: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], deleteTask: [{
|
|
182
|
+
type: Output
|
|
183
|
+
}], editTask: [{
|
|
184
|
+
type: Output
|
|
185
|
+
}], daySelect: [{
|
|
186
|
+
type: Output
|
|
187
|
+
}], loadData: [{
|
|
188
|
+
type: Output
|
|
189
|
+
}] } });
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWNhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXItY29udGFpbmVyL2NhbGVuZGFyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLWNvbnRhaW5lci9jYWxlbmRhci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLFVBQVUsRUFDVixjQUFjLEVBT2pCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQWlCOUIsTUFBTSxPQUFPLDBCQUNULFNBQVEsdUJBQWdEO0lBNkJ4RCxZQUNZLFVBQXlCLEVBQ3pCLGFBQStCLEVBQy9CLGdCQUFpQyxFQUNqQyxZQUF5QixFQUN2QixHQUFlLEVBQ2YsSUFBdUIsRUFDdkIsVUFBcUIsRUFDckIsbUJBQTJDLEVBQzNDLGVBQStCLEVBQy9CLGNBQTZCO1FBRXZDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFYM0UsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFD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QUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDM0QsQ0FBQzs7dUhBaE1RLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHlNQVJ4QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLFdBQVc7WUFDcEIsVUFBVSxFQUFFLGNBQWM7WUFDMUIsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO1NBQ3JCO0tBQ0osc0VDN0NMLGc5S0FxS0E7MkZEdEhhLDBCQUEwQjtrQkFidEMsU0FBUzsrQkFDSSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFVBQVUsRUFBRSxjQUFjOzRCQUMxQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7eUJBQ3JCO3FCQUNKOzBXQU1RLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgVWlSZXBvcnRWaWV3QmFzZVNldHRpbmcsXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXG4gICAgRGF0ZVNlcnZpY2UsXG4gICAgTG9nU2VydmljZSxcbiAgICBnZXREYXRlU2VydmljZSxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIENhbGVuZGFyTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBCYmJUcmFuc2xhdGVQaXBlLFxuICAgIEZpbmRDb2x1bW5CeURiTmFtZVBpcGUsXG4gICAgVWx2TWFpblNlcnZpY2UsXG4gICAgUG9ydGFsU2VydmljZVxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhck1vZGUsIENhbGVuZGFyTW9udGhJbmZvLCBEYXkgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FsZW5kYXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmMtY2FsZW5kYXItY29udGFpbmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBnZXREYXRlU2VydmljZSxcbiAgICAgICAgICAgIGRlcHM6IFtMb2dTZXJ2aWNlXVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbnRhaW5lckNvbXBvbmVudFxuICAgIGV4dGVuZHMgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICAgIEBJbnB1dCgpIGNhbGVuZGFyRmllbGRzO1xuICAgIEBPdXRwdXQoKSBkZWxldGVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0VGFzayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZGF5U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAgIEBPdXRwdXQoKSBsb2FkRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGFydDogRGF0ZTsgZW5kOiBhbnkgfT4oKTtcbiAgICBzZWxlY3RlZERheTogRGF5O1xuICAgIHRvZGF5SW5kZXggPSAtMTtcbiAgICBzZWxlY3RlZEluZGV4OiBhbnk7XG4gICAgY2FsZW5kYXJzOiBDYWxlbmRhck1vbnRoSW5mb1tdO1xuICAgIHNob3dFdmVudHM6IGJvb2xlYW47XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICBzZWxlY3RlZE1vbnRoJDogT2JzZXJ2YWJsZTxDYWxlbmRhck1vbnRoSW5mbz47XG4gICAgdG9kYXk6IERhdGU7XG4gICAgd2Vla0RheXNNaW46IHN0cmluZ1tdO1xuICAgIHdlZWtEYXlzOiBzdHJpbmdbXTtcbiAgICBtb2RlJDogT2JzZXJ2YWJsZTxDYWxlbmRhck1vZGU+O1xuICAgIHNlbGVjdGVkV2VlayQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICB3ZWVrTW9kZURheXMkOiBPYnNlcnZhYmxlPERheVtdPjtcbiAgICBkYXlzJDogT2JzZXJ2YWJsZTxEYXlbXT47XG4gICAgd2Vla3NDb3VudDogbnVtYmVyO1xuICAgIGZpcnN0V2Vla0luZGV4OiBudW1iZXI7XG4gICAgbW9udGhXZWVrc0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIG1vZGVUaXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICB0aXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBldmVudE1vRGF0YUxpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfdGl0bGVDYXNlOiBUaXRsZUNhc2VQaXBlLFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGU6IEJiYlRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9kYXRlU2VydmljZTogRGF0ZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9yZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJvdGVjdGVkIF9maW5kQ29sdW1uQnlEYk5hbWU6IEZpbmRDb2x1bW5CeURiTmFtZVBpcGUsXG4gICAgICAgIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2VsLCBfY2RyLCBfcmVuZGVyZXIyLCBfZmluZENvbHVtbkJ5RGJOYW1lLCBfdWx2TWFpblNlcnZpY2UsIF9wb3J0YWxTZXJ2aWNlKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMucHJlcGFyZSgpO1xuICAgICAgICB0aGlzLl9zZXRXaWR0aEFuZEhlaWdodCgpO1xuICAgICAgICB0aGlzLnByZXBhcmVNb0RhdGFMaXN0KHRoaXMubW9EYXRhTGlzdCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW9udGg6IENhbGVuZGFyTW9udGhJbmZvKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWREYXRhLmVtaXQoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBtb250aC5kYXlzWzBdLmRhdGUsXG4gICAgICAgICAgICAgICAgZW5kOiBtb250aC5kYXlzW21vbnRoLmRheXMubGVuZ3RoIC0gMV0uZGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aGlzLnNldFRhc2tzKHRoaXMuY2FsZW5kYXJzLCB0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY2FsZW5kYXJGaWVsZHMpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IG1vRGF0YUxpc3QsIGRldmljZVNpemUgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmIChtb0RhdGFMaXN0ICYmICFtb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVNb0RhdGFMaXN0KGNoYW5nZXMubW9EYXRhTGlzdC5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGV2aWNlU2l6ZSAmJiAhZGV2aWNlU2l6ZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0V2lkdGhBbmRIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRheUNsaWNrKGRheTogRGF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5zZXRNb2RlKCdkYXknLCBkYXkpO1xuICAgIH1cbiAgICBvblNob3dUYXNrKCk6IHZvaWQge31cbiAgICBvblNsaWRlQ2hhbmdlKHNlbGVjdGVkOiBDYWxlbmRhck1vbnRoSW5mbyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2Uuc2V0U2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICAgIH1cbiAgICBvbk1vbnRoQ2Fyb3VzZWxMb2FkZWQoeyBvYmplY3QgfSk6IHZvaWQge1xuICAgICAgICBvYmplY3Quc2VsZWN0ZWRQYWdlID0gMTtcbiAgICB9XG5cbiAgICBvblRvZGF5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZ290b1RvZGF5KCk7XG4gICAgfVxuICAgIG9uTW9kZUNoYW5nZShtb2RlOiBDYWxlbmRhck1vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnNldE1vZGUobW9kZSk7XG4gICAgfVxuICAgIG9uUmFuZ2VDaGFuZ2UoZTogeyBzdGFydERheTogRGF5OyBlbmREYXk6IERheTsgbW9udGhJbmZvOiBDYWxlbmRhck1vbnRoSW5mbyB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5yYW5nZVNlbGVjdChlLnN0YXJ0RGF5LCBlLmVuZERheSwgZS5tb250aEluZm8pO1xuICAgIH1cbiAgICBvblByZXZUYXAoKTogdm9pZCB7XG4gICAgICAgIC8vICAgdGhpcy5nb3RvUGFnZSh0aGlzLm1vbnRoQ2Fyb3VzZWxWaWV3Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0ZWRQYWdlIC0gMSk7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sb2FkUHJldmlvdXMoKTtcbiAgICB9XG5cbiAgICBvbk5leHRUYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sb2FkTmV4dCgpO1xuICAgICAgICAvLyB0aGlzLmdvdG9QYWdlKHRoaXMubW9udGhDYXJvdXNlbFZpZXcubmF0aXZlRWxlbWVudC5zZWxlY3RlZFBhZ2UgKyAxKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkQ2hhbmdlKGRheTogRGF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSB7IC4uLmRheSB9O1xuICAgIH1cblxuICAgIHByZXBhcmVNb0RhdGFMaXN0KG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50TW9EYXRhTGlzdCQubmV4dChcbiAgICAgICAgICAgIG1vRGF0YUxpc3QubWFwKChldmVudCkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuSWQsIC8vIGJlY2F1c2UgaW4gY29yZS5qcyBjYWxlbmRhciBzZWxlY3Rpb24gYWRhcHRlciByZWFkIGlkIHdpdGggbG93ZXJjYXNlXG4gICAgICAgICAgICAgICAgJFN0YXJ0RGF0ZUluZm86IHRoaXMuX2RhdGVTZXJ2aWNlLmdldERhdGVJbmZvKGV2ZW50W3RoaXMuY2FsZW5kYXJGaWVsZHMuU3RhcnREYXRlXSksXG4gICAgICAgICAgICAgICAgJEVuZERhdGVJbmZvOiB0aGlzLl9kYXRlU2VydmljZS5nZXREYXRlSW5mbyhldmVudFt0aGlzLmNhbGVuZGFyRmllbGRzLkVuZERhdGVdKVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYWRkVGQodGFibGU6IGFueVtdLCB0cjogYW55W10sIGV2ZW50OiBDYWxlbmRhck1ldGFvYmplY3REYXRhTW9kZWwsIGNvbFNwYW46IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xTcGFuQ291bnQgPSB0ci5sZW5ndGggPiAwID8gdHIubWFwKChjKSA9PiBjLmNvbFNwYW4pLnJlZHVjZSgoYSwgYikgPT4gYSArIGIpID4gNiA6IDA7XG4gICAgICAgIGlmIChjb2xTcGFuQ291bnQpIHtcbiAgICAgICAgICAgIHRhYmxlLnB1c2godHIpO1xuICAgICAgICAgICAgdHIgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0ci5wdXNoKHsgdHlwZTogJ3RkJywgY29sU3BhbiwgZXZlbnQgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgcHJlcGFyZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrRGF5c01pbiA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS53ZWVrRGF5c01pbigpO1xuICAgICAgICB0aGlzLndlZWtEYXlzID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLndlZWtEYXlzKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCQgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2Uuc2VsZWN0ZWQkO1xuICAgICAgICB0aGlzLmRheXMkID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmRheXMkO1xuICAgICAgICB0aGlzLnRvZGF5ID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnRvZGF5O1xuICAgICAgICB0aGlzLm1vZGUkID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm1vZGUkO1xuXG4gICAgICAgIHRoaXMubW9udGhXZWVrc0NvdW50JCA9IHRoaXMubW9kZSQucGlwZShcbiAgICAgICAgICAgIG1hcCgobW9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhclNlcnZpY2Uuc2VsZWN0ZWRNb250aC53ZWVrc0NvdW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9kZVRpdGxlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF5cyQsIHRoaXMubW9kZSRdKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbLCBtb2RlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnY3VzdG9tTW9udGgnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihgJHt0aGlzLl9jYWxlbmRhclNlcnZpY2Uud2Vla3NDb3VudH0gICR7dGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybSgnV2VlaycpfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybSh0aGlzLl90aXRsZUNhc2UudHJhbnNmb3JtKG1vZGUpKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMud2Vla01vZGVEYXlzJCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS53ZWVrTW9kZURheXMkO1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjYWxlbmRhcnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50Q2FsZW5kYXJzID0gWy4uLmNhbGVuZGFyc107XG4gICAgICAgICAgICAvLyBldmVudENhbGVuZGFycyA9IGV2ZW50Q2FsZW5kYXJzLnNwbGljZSh0aGlzLnNlbGVjdGVkSW5kZXgsIDMpO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhcnMgPSBldmVudENhbGVuZGFycztcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLm1vbnRoQ2Fyb3VzZWxWaWV3KSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMubW9udGhDYXJvdXNlbFZpZXcubmF0aXZlRWxlbWVudC5zZWxlY3RlZFBhZ2UgPSAxO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgIC8vICAgLnN1YnNjcmliZSgodG9kYXlJbmRleCkgPT4ge1xuICAgICAgICAvLyAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy50b2RheUluZGV4ID0gdG9kYXlJbmRleDtcbiAgICAgICAgLy8gICAgIHRoaXMuZ290b1BhZ2UodGhpcy50b2RheUluZGV4KTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgdGhpcy50aXRsZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndlZWtNb2RlRGF5cyQsIHRoaXMuc2VsZWN0ZWRNb250aCQsIHRoaXMuZGF5cyQsIHRoaXMubW9kZSRdKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbd2Vla01vZGVEYXlzLCBtb250aEluZm8sIGRheXMsIG1vZGVdKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG1vbnRoTmFtZSA9IG1vbnRoSW5mby5kYXRlSW5mby5tb250aE5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IG1vbnRoSW5mby5kYXRlSW5mby5zdHJZZWFyO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgIT09ICdtb250aCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0RGF5SW5mbzogRGF5O1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdERheUluZm86IERheTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF5c1RlbXAgPSBtb2RlID09PSAnY3VzdG9tTW9udGgnID8gZGF5cyA6IHdlZWtNb2RlRGF5cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRheXNUZW1wLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5SW5mbyA9IGRheXNUZW1wWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdERheUluZm8gPSBkYXlzVGVtcFtkYXlzVGVtcC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTmFtZSA9IGZpcnN0RGF5SW5mby5tb250aE5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3REYXlJbmZvLm1vbnRoICE9PSBsYXN0RGF5SW5mby5tb250aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTmFtZSA9IGAke2ZpcnN0RGF5SW5mby5tb250aE5hbWV9IC1cbiAgICAgICAgICAgICAgJHtsYXN0RGF5SW5mby5tb250aE5hbWV9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoYCR7bW9udGhOYW1lfSAgJHt5ZWFyfWApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRXaWR0aEFuZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSA0NTtcbiAgICB9XG59XG4iLCI8YmMtY2FsZW5kYXItaGVhZGVyXG4gICAgW21vbnRoSW5mb109XCIoc2VsZWN0ZWRNb250aCQgfCBhc3luYykhIVwiXG4gICAgW3dlZWtNb2RlRGF5c109XCIod2Vla01vZGVEYXlzJCB8IGFzeW5jKSEhXCJcbiAgICBbcnRsXT1cInJ0bFwiXG4gICAgW21vZGVdPVwiKG1vZGUkIHwgYXN5bmMpISFcIlxuICAgIFttb2RlVGl0bGVdPVwiKG1vZGVUaXRsZSQgfCBhc3luYykhIVwiXG4gICAgW3RpdGxlXT1cIih0aXRsZSQgfCBhc3luYykhIVwiXG4gICAgKG1vZGVDaGFuZ2UpPVwib25Nb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChwcmV2VGFwKT1cIm9uUHJldlRhcCgpXCJcbiAgICAobmV4dFRhcCk9XCJvbk5leHRUYXAoKVwiXG4gICAgKHRvZGF5KT1cIm9uVG9kYXkoKVwiXG4gICAgKHJhbmdlQ2hhbmdlKT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4+XG48L2JjLWNhbGVuZGFyLWhlYWRlcj5cblxuPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZSQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid3ZWVrJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHdlZWtDYWxlbmRhcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2VsZWN0ZWRNb250aCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICAgICAgbW9EYXRhTGlzdDogZXZlbnRNb0RhdGFMaXN0JCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBydGw6IHJ0bCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0V2ZW50czogc2hvd0V2ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgd2Vla01vZGVEYXlzOiB3ZWVrTW9kZURheXMkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgIHRvZGF5OiB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJGaWVsZHM6IGNhbGVuZGFyRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3M6IGFjY2Vzc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF5J1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHdlZWtDYWxlbmRhcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2VsZWN0ZWRNb250aCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICAgICAgbW9EYXRhTGlzdDogZXZlbnRNb0RhdGFMaXN0JCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBydGw6IHJ0bCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0V2ZW50czogc2hvd0V2ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgd2Vla01vZGVEYXlzOiB3ZWVrTW9kZURheXMkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgIHRvZGF5OiB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJGaWVsZHM6IGNhbGVuZGFyRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3M6IGFjY2Vzc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGlzdCdcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgbW9udGhDYWxlbmRhcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF5cyQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICAgICAgbW9EYXRhTGlzdDogZXZlbnRNb0RhdGFMaXN0JCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBydGw6IHJ0bCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0V2ZW50czogc2hvd0V2ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgdG9kYXk6IHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICBkZXZpY2VTaXplOiBkZXZpY2VTaXplLFxuICAgICAgICAgICAgICAgICAgICBjYWxlbmRhckZpZWxkczogY2FsZW5kYXJGaWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoV2Vla3NDb3VudDogbW9udGhXZWVrc0NvdW50JCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3M6IGFjY2Vzc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGVcbiAgICAjbW9udGhDYWxlbmRhclxuICAgIGxldC1kYXlzXG4gICAgbGV0LW1vRGF0YUxpc3Q9XCJtb0RhdGFMaXN0XCJcbiAgICBsZXQtd2lkdGg9XCJ3aWR0aFwiXG4gICAgbGV0LWhlaWdodD1cImhlaWdodFwiXG4gICAgbGV0LWNhbGVuZGFyRmllbGRzPVwiY2FsZW5kYXJGaWVsZHNcIlxuICAgIGxldC1ydGw9XCJydGxcIlxuICAgIGxldC10b2RheT1cInRvZGF5XCJcbiAgICBsZXQtc2hvd0V2ZW50cz1cInNob3dFdmVudHNcIlxuICAgIGxldC1kZXZpY2VTaXplPVwiZGV2aWNlU2l6ZVwiXG4gICAgbGV0LW1vbnRoV2Vla3NDb3VudD1cIm1vbnRoV2Vla3NDb3VudFwiXG4gICAgbGV0LWFjY2Vzcz1cImFjY2Vzc1wiXG4+XG4gICAgPGJjLWNhbGVuZGFyLW1vbnRoXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgICAgIFtjb250YWluZXJIZWlnaHRdPVwicGFyZW50SGVpZ2h0ICE9PSAwID8gcGFyZW50SGVpZ2h0IDogaGVpZ2h0XCJcbiAgICAgICAgW2NvbnRhaW5lcldpZHRoXT1cIndpZHRoXCJcbiAgICAgICAgW2NhbGVuZGFyRmllbGRzXT1cImNhbGVuZGFyRmllbGRzXCJcbiAgICAgICAgW21vRGF0YUxpc3RdPVwibW9EYXRhTGlzdFwiXG4gICAgICAgIFttb250aFdlZWtzQ291bnRdPVwibW9udGhXZWVrc0NvdW50XCJcbiAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICBbd2Vla0RheXNdPVwid2Vla0RheXNcIlxuICAgICAgICBbd2Vla0RheXNNaW5dPVwid2Vla0RheXNNaW5cIlxuICAgICAgICBbdG9kYXldPVwidG9kYXlcIlxuICAgICAgICBbc2hvd0V2ZW50c109XCJzaG93RXZlbnRzXCJcbiAgICAgICAgW2RheXNdPVwiZGF5c1wiXG4gICAgICAgIFtjYW5BZGRdPVwiYWNjZXNzLkFkZFwiXG4gICAgICAgIFtjYW5FZGl0XT1cImFjY2Vzcy5FZGl0XCJcbiAgICAgICAgW2NhbkRlbGV0ZV09XCJhY2Nlc3MuRGVsZXRlXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgICAgICAoc2hvd0V2ZW50KT1cIm9uU2hvd1Rhc2soKVwiXG4gICAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVUYXNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChlZGl0RXZlbnQpPVwiZWRpdFRhc2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGRheVNlbGVjdCk9XCJkYXlTZWxlY3QuZW1pdCgkZXZlbnQpXCJcbiAgICA+PC9iYy1jYWxlbmRhci1tb250aD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdENhbGVuZGFyPlxuICAgIDxiYy1jYWxlbmRhci1saXN0LWNvbnRhaW5lclxuICAgICAgICBbc2hvd0V2ZW50c109XCJzaG93RXZlbnRzXCJcbiAgICAgICAgW3NlbGVjdGVkRGF5XT1cInNlbGVjdGVkRGF5XCJcbiAgICAgICAgW2NhbGVuZGFyRmllbGRzXT1cImNhbGVuZGFyRmllbGRzXCJcbiAgICAgICAgKHNob3dFdmVudHNUYXApPVwic2hvd0V2ZW50cyA9ICFzaG93RXZlbnRzXCJcbiAgICA+PC9iYy1jYWxlbmRhci1saXN0LWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICN3ZWVrQ2FsZW5kYXJcbiAgICBsZXQtc2VsZWN0ZWRNb250aFxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LXdpZHRoPVwid2lkdGhcIlxuICAgIGxldC1oZWlnaHQ9XCJoZWlnaHRcIlxuICAgIGxldC1jYWxlbmRhckZpZWxkcz1cImNhbGVuZGFyRmllbGRzXCJcbiAgICBsZXQtcnRsPVwicnRsXCJcbiAgICBsZXQtdG9kYXk9XCJ0b2RheVwiXG4gICAgbGV0LXNob3dFdmVudHM9XCJzaG93RXZlbnRzXCJcbiAgICBsZXQtZGV2aWNlU2l6ZT1cImRldmljZVNpemVcIlxuICAgIGxldC13ZWVrTW9kZURheXM9XCJ3ZWVrTW9kZURheXNcIlxuICAgIGxldC1hY2Nlc3M9XCJhY2Nlc3NcIlxuPlxuICAgIDxiYy1jYWxlbmRhci13ZWVrXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgICAgIFtjb250YWluZXJIZWlnaHRdPVwicGFyZW50SGVpZ2h0ICE9PSAwID8gcGFyZW50SGVpZ2h0IDogaGVpZ2h0XCJcbiAgICAgICAgW2NvbnRhaW5lcldpZHRoXT1cIndpZHRoXCJcbiAgICAgICAgW2luRGlhbG9nXT1cImluRGlhbG9nXCJcbiAgICAgICAgW2NhbGVuZGFyRmllbGRzXT1cImNhbGVuZGFyRmllbGRzXCJcbiAgICAgICAgW21vRGF0YUxpc3RdPVwibW9EYXRhTGlzdFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2NhbkFkZF09XCJhY2Nlc3MuQWRkXCJcbiAgICAgICAgW2NhbkVkaXRdPVwiYWNjZXNzLkVkaXRcIlxuICAgICAgICBbY2FuRGVsZXRlXT1cImFjY2Vzcy5EZWxldGVcIlxuICAgICAgICBbd2Vla0RheXNdPVwid2Vla0RheXNcIlxuICAgICAgICBbd2Vla0RheXNNaW5dPVwid2Vla0RheXNNaW5cIlxuICAgICAgICBbdG9kYXldPVwidG9kYXlcIlxuICAgICAgICBbc2hvd0V2ZW50c109XCJzaG93RXZlbnRzXCJcbiAgICAgICAgW2RheXNdPVwid2Vla01vZGVEYXlzXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgICAgICAoc2hvd0V2ZW50KT1cIm9uU2hvd1Rhc2soKVwiXG4gICAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVUYXNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChlZGl0RXZlbnQpPVwiZWRpdFRhc2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGRheVNlbGVjdCk9XCJkYXlTZWxlY3QuZW1pdCgkZXZlbnQpXCJcbiAgICA+PC9iYy1jYWxlbmRhci13ZWVrPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,61 @@
|
|
|
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/menu";
|
|
6
|
+
import * as i3 from "@fundamental-ngx/core/title";
|
|
7
|
+
import * as i4 from "@fundamental-ngx/core/split-button";
|
|
8
|
+
import * as i5 from "@fundamental-ngx/core/toolbar";
|
|
9
|
+
import * as i6 from "@fundamental-ngx/platform/button";
|
|
10
|
+
import * as i7 from "../calendar-selection-days/calendar-selection-days.component";
|
|
11
|
+
import * as i8 from "barsa-novin-ray-core";
|
|
12
|
+
export class CalendarHeaderComponent extends BaseComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.hideMode = false;
|
|
16
|
+
this.prevTap = new EventEmitter();
|
|
17
|
+
this.nextTap = new EventEmitter();
|
|
18
|
+
this.modeChange = new EventEmitter();
|
|
19
|
+
this.rangeChange = new EventEmitter();
|
|
20
|
+
this.today = new EventEmitter();
|
|
21
|
+
this.monthName = '';
|
|
22
|
+
}
|
|
23
|
+
onModeChange(mode) {
|
|
24
|
+
this.modeChange.emit(mode);
|
|
25
|
+
}
|
|
26
|
+
onRangeChange(range) {
|
|
27
|
+
this.rangeChange.emit(range);
|
|
28
|
+
}
|
|
29
|
+
onPrint() { }
|
|
30
|
+
}
|
|
31
|
+
CalendarHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
CalendarHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CalendarHeaderComponent, selector: "bc-calendar-header", inputs: { monthInfo: "monthInfo", weekModeDays: "weekModeDays", hideMode: "hideMode", modeTitle: "modeTitle", title: "title", rtl: "rtl", mode: "mode" }, outputs: { prevTap: "prevTap", nextTap: "nextTap", modeChange: "modeChange", rangeChange: "rangeChange", today: "today" }, usesInheritance: true, ngImport: i0, template: "<fd-toolbar [shouldOverflow]=\"true\" [fdType]=\"'transparent'\">\r\n <fdp-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"today.emit()\"></fdp-button>\r\n <fdp-button\r\n buttonType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"prevTap.emit()\"\r\n ></fdp-button>\r\n <fdp-button\r\n buttonType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"nextTap.emit()\"\r\n ></fdp-button>\r\n <h3 fd-title fd-toolbar-item>{{ title }}</h3>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fdp-button fd-toolbar-item glyph=\"print\" (click)=\"onPrint()\" buttonType=\"transparent\"></fdp-button>\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [monthInfo]=\"monthInfo\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n\r\n <fd-split-button\r\n *ngIf=\"!hideMode\"\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: modeTitle,\r\n keepMainAction: true\r\n }\"\r\n >\r\n <fd-menu>\r\n <li fd-menu-item (click)=\"onModeChange('day')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Day' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange('week')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Week' | bbbTranslate }} </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange('month')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Month' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <!-- <li fd-menu-item (click)=\"onModeChange('year')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ \"Year\" | bbbTranslate }}</span>\r\n </div>\r\n </li> -->\r\n </fd-menu>\r\n </fd-split-button>\r\n</fd-toolbar>\r\n", styles: [":host{display:block;background-color:var(--sapList_Background, #fff)}::ng-deep span.fd-toolbar__spacer{display:none}::ng-deep .fd-toolbar{border:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i2.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i2.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i4.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "disabled", "mainActionTitle", "fdType", "expandButtonAriaLabel", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "component", type: i5.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i5.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i5.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i6.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i7.CalendarSelectionDaysComponent, selector: "bc-calendar-selection-days", inputs: ["startSelectedDayIndex", "endSelectedDayIndex", "monthInfo"], outputs: ["rangeChange"] }, { kind: "pipe", type: i8.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'bc-calendar-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-toolbar [shouldOverflow]=\"true\" [fdType]=\"'transparent'\">\r\n <fdp-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"today.emit()\"></fdp-button>\r\n <fdp-button\r\n buttonType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"prevTap.emit()\"\r\n ></fdp-button>\r\n <fdp-button\r\n buttonType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"nextTap.emit()\"\r\n ></fdp-button>\r\n <h3 fd-title fd-toolbar-item>{{ title }}</h3>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fdp-button fd-toolbar-item glyph=\"print\" (click)=\"onPrint()\" buttonType=\"transparent\"></fdp-button>\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [monthInfo]=\"monthInfo\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n\r\n <fd-split-button\r\n *ngIf=\"!hideMode\"\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: modeTitle,\r\n keepMainAction: true\r\n }\"\r\n >\r\n <fd-menu>\r\n <li fd-menu-item (click)=\"onModeChange('day')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Day' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange('week')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Week' | bbbTranslate }} </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange('month')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Month' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <!-- <li fd-menu-item (click)=\"onModeChange('year')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ \"Year\" | bbbTranslate }}</span>\r\n </div>\r\n </li> -->\r\n </fd-menu>\r\n </fd-split-button>\r\n</fd-toolbar>\r\n", styles: [":host{display:block;background-color:var(--sapList_Background, #fff)}::ng-deep span.fd-toolbar__spacer{display:none}::ng-deep .fd-toolbar{border:none}\n"] }]
|
|
36
|
+
}], propDecorators: { monthInfo: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], weekModeDays: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], hideMode: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], modeTitle: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], title: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], rtl: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], mode: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], prevTap: [{
|
|
51
|
+
type: Output
|
|
52
|
+
}], nextTap: [{
|
|
53
|
+
type: Output
|
|
54
|
+
}], modeChange: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}], rangeChange: [{
|
|
57
|
+
type: Output
|
|
58
|
+
}], today: [{
|
|
59
|
+
type: Output
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWNhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFRckQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQWE7SUFOMUQ7O1FBU2EsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUtoQixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFJcEMsQ0FBQztRQUNLLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXJDLGNBQVMsR0FBRyxFQUFFLENBQUM7S0FTbEI7SUFQRyxZQUFZLENBQUMsSUFBa0I7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sS0FBVSxDQUFDOztvSEExQlQsdUJBQXVCO3dHQUF2Qix1QkFBdUIsc1dDVnBDLHl2RUF3REE7MkZEOUNhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2RlLCBDYWxlbmRhck1vbnRoSW5mbywgRGF5IH0gZnJvbSAnLi4vbW9kZWxzJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JjLWNhbGVuZGFyLWhlYWRlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFySGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBtb250aEluZm86IENhbGVuZGFyTW9udGhJbmZvO1xyXG4gICAgQElucHV0KCkgd2Vla01vZGVEYXlzOiBEYXlbXTtcclxuICAgIEBJbnB1dCgpIGhpZGVNb2RlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBtb2RlVGl0bGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBtb2RlOiBDYWxlbmRhck1vZGU7XHJcbiAgICBAT3V0cHV0KCkgcHJldlRhcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBuZXh0VGFwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyTW9kZT4oKTtcclxuICAgIEBPdXRwdXQoKSByYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIHN0YXJ0RGF5OiBEYXk7XHJcbiAgICAgICAgZW5kRGF5OiBEYXk7XHJcbiAgICAgICAgbW9udGhJbmZvOiBDYWxlbmRhck1vbnRoSW5mbztcclxuICAgIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgdG9kYXkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICB5ZWFyOiBzdHJpbmc7XHJcbiAgICBtb250aE5hbWUgPSAnJztcclxuXHJcbiAgICBvbk1vZGVDaGFuZ2UobW9kZTogQ2FsZW5kYXJNb2RlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tb2RlQ2hhbmdlLmVtaXQobW9kZSk7XHJcbiAgICB9XHJcbiAgICBvblJhbmdlQ2hhbmdlKHJhbmdlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHJhbmdlKTtcclxuICAgIH1cclxuICAgIG9uUHJpbnQoKTogdm9pZCB7fVxyXG59XHJcbiIsIjxmZC10b29sYmFyIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCI+XHJcbiAgICA8ZmRwLWJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gW2xhYmVsXT1cIidEYXRlUl9Ub2RheScgfCBiYmJUcmFuc2xhdGVcIiAoY2xpY2spPVwidG9kYXkuZW1pdCgpXCI+PC9mZHAtYnV0dG9uPlxyXG4gICAgPGZkcC1idXR0b25cclxuICAgICAgICBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFtnbHlwaF09XCJydGwgPyAnbmF2aWdhdGlvbi1yaWdodC1hcnJvdycgOiAnbmF2aWdhdGlvbi1sZWZ0LWFycm93J1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInByZXZUYXAuZW1pdCgpXCJcclxuICAgID48L2ZkcC1idXR0b24+XHJcbiAgICA8ZmRwLWJ1dHRvblxyXG4gICAgICAgIGJ1dHRvblR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgW2dseXBoXT1cInJ0bCA/ICduYXZpZ2F0aW9uLWxlZnQtYXJyb3cnIDogJ25hdmlnYXRpb24tcmlnaHQtYXJyb3cnXCJcclxuICAgICAgICAoY2xpY2spPVwibmV4dFRhcC5lbWl0KClcIlxyXG4gICAgPjwvZmRwLWJ1dHRvbj5cclxuICAgIDxoMyBmZC10aXRsZSBmZC10b29sYmFyLWl0ZW0+e3sgdGl0bGUgfX08L2gzPlxyXG4gICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XHJcbiAgICA8ZmRwLWJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gZ2x5cGg9XCJwcmludFwiIChjbGljayk9XCJvblByaW50KClcIiBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIj48L2ZkcC1idXR0b24+XHJcbiAgICA8YmMtY2FsZW5kYXItc2VsZWN0aW9uLWRheXNcclxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICBbbW9udGhJbmZvXT1cIm1vbnRoSW5mb1wiXHJcbiAgICAgICAgKHJhbmdlQ2hhbmdlKT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC9iYy1jYWxlbmRhci1zZWxlY3Rpb24tZGF5cz5cclxuXHJcbiAgICA8ZmQtc3BsaXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCIhaGlkZU1vZGVcIlxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFtmaXhlZFdpZHRoXT1cImZhbHNlXCJcclxuICAgICAgICBbbWFpbkFjdGlvbl09XCJ7XHJcbiAgICAgICAgICAgIG1haW5BY3Rpb25UaXRsZTogbW9kZVRpdGxlLFxyXG4gICAgICAgICAgICBrZWVwTWFpbkFjdGlvbjogdHJ1ZVxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDxmZC1tZW51PlxyXG4gICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJvbk1vZGVDaGFuZ2UoJ2RheScpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAnRGF5JyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJvbk1vZGVDaGFuZ2UoJ3dlZWsnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgJ1dlZWsnIHwgYmJiVHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJvbk1vZGVDaGFuZ2UoJ21vbnRoJylcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7ICdNb250aCcgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPCEtLSA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJvbk1vZGVDaGFuZ2UoJ3llYXInKVwiPlxyXG4gICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZT5cclxuICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgXCJZZWFyXCIgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgIDwvZmQtbWVudT5cclxuICAgIDwvZmQtc3BsaXQtYnV0dG9uPlxyXG48L2ZkLXRvb2xiYXI+XHJcbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } 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 "../calendar-list-item/calendar-list-item.component";
|
|
6
|
+
export class CalendarListComponent extends BaseComponent {
|
|
7
|
+
trackById(index, item) {
|
|
8
|
+
return item.Id;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
CalendarListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
CalendarListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CalendarListComponent, selector: "bc-calendar-list", inputs: { moDataList: "moDataList" }, usesInheritance: true, ngImport: i0, template: "<bc-calendar-list-item *ngFor=\"let item of moDataList; trackBy: trackById\" [mo]=\"item\"> </bc-calendar-list-item>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.CalendarListItemComponent, selector: "bc-calendar-list-item", inputs: ["mo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarListComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: 'bc-calendar-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bc-calendar-list-item *ngFor=\"let item of moDataList; trackBy: trackById\" [mo]=\"item\"> </bc-calendar-list-item>\r\n" }]
|
|
16
|
+
}], propDecorators: { moDataList: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}] } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLWxpc3QvY2FsZW5kYXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLWxpc3QvY2FsZW5kYXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFvRCxNQUFNLHNCQUFzQixDQUFDOzs7O0FBT3ZHLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBRTdDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBeUI7UUFDckQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7O2tIQUpRLHFCQUFxQjtzR0FBckIscUJBQXFCLHFIQ1RsQywwSEFDQTsyRkRRYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBDYWxlbmRhck1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JjLWNhbGVuZGFyLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgbW9EYXRhTGlzdDogQ2FsZW5kYXJNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgcHVibGljIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uSWQ7XG4gICAgfVxufVxuIiwiPGJjLWNhbGVuZGFyLWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb0RhdGFMaXN0OyB0cmFja0J5OiB0cmFja0J5SWRcIiBbbW9dPVwiaXRlbVwiPiA8L2JjLWNhbGVuZGFyLWxpc3QtaXRlbT5cclxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
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 "../calendar-list/calendar-list.component";
|
|
6
|
+
export class CalendarListContainerComponent extends BaseComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.showEventsTap = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
CalendarListContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarListContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
CalendarListContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CalendarListContainerComponent, selector: "bc-calendar-list-container", inputs: { view: "view", reportItemComponentName: "reportItemComponentName", showEvents: "showEvents", selectedDay: "selectedDay", calendarFields: "calendarFields" }, outputs: { showEventsTap: "showEventsTap" }, usesInheritance: true, ngImport: i0, template: "<bc-calendar-list *ngIf=\"selectedDay\" [moDataList]=\"selectedDay.tasks\"></bc-calendar-list>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CalendarListComponent, selector: "bc-calendar-list", inputs: ["moDataList"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarListContainerComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'bc-calendar-list-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bc-calendar-list *ngIf=\"selectedDay\" [moDataList]=\"selectedDay.tasks\"></bc-calendar-list>\r\n" }]
|
|
17
|
+
}], propDecorators: { view: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], reportItemComponentName: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], showEvents: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], selectedDay: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], calendarFields: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], showEventsTap: [{
|
|
28
|
+
type: Output
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbGlzdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci1saXN0LWNvbnRhaW5lci9jYWxlbmRhci1saXN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLWxpc3QtY29udGFpbmVyL2NhbGVuZGFyLWxpc3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEcsT0FBTyxFQUFFLGFBQWEsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVFyRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsYUFBYTtJQU5qRTs7UUFZYyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FDaEQ7OzJIQVBZLDhCQUE4QjsrR0FBOUIsOEJBQThCLDRTQ1YzQyxvR0FDQTsyRkRTYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0ksNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgQ2FsZW5kYXJGaWVsZHMgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBEYXkgfSBmcm9tICcuLi9tb2RlbHMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYy1jYWxlbmRhci1saXN0LWNvbnRhaW5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWxpc3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1saXN0LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTGlzdENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHZpZXc6IGFueTtcbiAgICBASW5wdXQoKSByZXBvcnRJdGVtQ29tcG9uZW50TmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNob3dFdmVudHM6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWREYXk6IERheTtcbiAgICBASW5wdXQoKSBjYWxlbmRhckZpZWxkczogQ2FsZW5kYXJGaWVsZHM7XG4gICAgQE91dHB1dCgpIHNob3dFdmVudHNUYXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG59XG4iLCI8YmMtY2FsZW5kYXItbGlzdCAqbmdJZj1cInNlbGVjdGVkRGF5XCIgW21vRGF0YUxpc3RdPVwic2VsZWN0ZWREYXkudGFza3NcIj48L2JjLWNhbGVuZGFyLWxpc3Q+XHJcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { BaseComponent } from 'barsa-novin-ray-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CalendarListItemComponent extends BaseComponent {
|
|
5
|
+
}
|
|
6
|
+
CalendarListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7
|
+
CalendarListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CalendarListItemComponent, selector: "bc-calendar-list-item", inputs: { mo: "mo" }, usesInheritance: true, ngImport: i0, template: "<div class=\"wrapper\">\r\n <div flexShrink=\"1\" class=\"day-wrapper\">\r\n <Label [text]=\"mo.$StartTimes\"></Label>\r\n <Label class=\"ela\" [text]=\"'\u0627\u0644\u06CC'\"></Label>\r\n <Label [text]=\"mo.$EndTimes\"></Label>\r\n </div>\r\n <div class=\"color\" [style.background-color]=\"mo.$Color\"></div>\r\n <div class=\"event-wrapper\">\r\n <Label class=\"title\" [text]=\"mo.$Title\"></Label>\r\n <Label class=\"desc\" [text]=\"mo.$Notes\"></Label>\r\n </div>\r\n</div>\r\n", styles: [".wrapper{display:flex;flex-direction:row}.day-wrapper{display:flex;flex-shrink:1}.color{width:1}.event-wrapper{display:flex;flex-grow:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarListItemComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{ selector: 'bc-calendar-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrapper\">\r\n <div flexShrink=\"1\" class=\"day-wrapper\">\r\n <Label [text]=\"mo.$StartTimes\"></Label>\r\n <Label class=\"ela\" [text]=\"'\u0627\u0644\u06CC'\"></Label>\r\n <Label [text]=\"mo.$EndTimes\"></Label>\r\n </div>\r\n <div class=\"color\" [style.background-color]=\"mo.$Color\"></div>\r\n <div class=\"event-wrapper\">\r\n <Label class=\"title\" [text]=\"mo.$Title\"></Label>\r\n <Label class=\"desc\" [text]=\"mo.$Notes\"></Label>\r\n </div>\r\n</div>\r\n", styles: [".wrapper{display:flex;flex-direction:row}.day-wrapper{display:flex;flex-shrink:1}.color{width:1}.event-wrapper{display:flex;flex-grow:1}\n"] }]
|
|
11
|
+
}], propDecorators: { mo: [{
|
|
12
|
+
type: Input
|
|
13
|
+
}] } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWNhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXItbGlzdC1pdGVtL2NhbGVuZGFyLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLWxpc3QtaXRlbS9jYWxlbmRhci1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBK0IsTUFBTSxzQkFBc0IsQ0FBQzs7QUFPbEYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7O3NIQUEvQyx5QkFBeUI7MEdBQXpCLHlCQUF5QiwwR0NUdEMsc2hCQVlBOzJGREhhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEVBQUU7c0JBQVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIENhbGVuZGFyTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmMtY2FsZW5kYXItbGlzdC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckxpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgbW86IENhbGVuZGFyTWV0YW9iamVjdERhdGFNb2RlbDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICA8ZGl2IGZsZXhTaHJpbms9XCIxXCIgY2xhc3M9XCJkYXktd3JhcHBlclwiPlxyXG4gICAgICAgIDxMYWJlbCBbdGV4dF09XCJtby4kU3RhcnRUaW1lc1wiPjwvTGFiZWw+XHJcbiAgICAgICAgPExhYmVsIGNsYXNzPVwiZWxhXCIgW3RleHRdPVwiJ9in2YTbjCdcIj48L0xhYmVsPlxyXG4gICAgICAgIDxMYWJlbCBbdGV4dF09XCJtby4kRW5kVGltZXNcIj48L0xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJtby4kQ29sb3JcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJldmVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgPExhYmVsIGNsYXNzPVwidGl0bGVcIiBbdGV4dF09XCJtby4kVGl0bGVcIj48L0xhYmVsPlxyXG4gICAgICAgIDxMYWJlbCBjbGFzcz1cImRlc2NcIiBbdGV4dF09XCJtby4kTm90ZXNcIj48L0xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|