@smart-solutions-tech/smart-angular-calendar 0.0.2 → 0.0.4
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/esm2020/lib/components/calendar/calendar.component.mjs +9 -7
- package/esm2020/lib/components/day/day.component.mjs +92 -0
- package/esm2020/lib/components/duration-event/duration-event.component.mjs +56 -0
- package/esm2020/lib/components/month-selector/month-selector.component.mjs +82 -0
- package/esm2020/lib/components/more-events-modal/more-events-modal.component.mjs +2 -2
- package/esm2020/lib/components/smart-calendar/smart-calendar.component.mjs +180 -6
- package/esm2020/lib/pipes/translate-month.pipe.mjs +22 -0
- package/esm2020/lib/smart-angular-calendar.module.mjs +15 -3
- package/esm2020/lib/translations.mjs +43 -1
- package/esm2020/lib/types.mjs +1 -1
- package/fesm2015/smart-solutions-tech-smart-angular-calendar.mjs +468 -13
- package/fesm2015/smart-solutions-tech-smart-angular-calendar.mjs.map +1 -1
- package/fesm2020/smart-solutions-tech-smart-angular-calendar.mjs +467 -13
- package/fesm2020/smart-solutions-tech-smart-angular-calendar.mjs.map +1 -1
- package/lib/components/calendar/calendar.component.d.ts +4 -13
- package/lib/components/day/day.component.d.ts +28 -0
- package/lib/components/duration-event/duration-event.component.d.ts +20 -0
- package/lib/components/month-selector/month-selector.component.d.ts +30 -0
- package/lib/components/smart-calendar/smart-calendar.component.d.ts +36 -2
- package/lib/pipes/translate-month.pipe.d.ts +10 -0
- package/lib/smart-angular-calendar.module.d.ts +6 -2
- package/lib/translations.d.ts +14 -0
- package/lib/types.d.ts +14 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "../calendar-event/calendar-event.component";
|
|
@@ -12,7 +12,6 @@ export class CalendarComponent {
|
|
|
12
12
|
};
|
|
13
13
|
this.events = [];
|
|
14
14
|
this.startAt = 'sunday';
|
|
15
|
-
this.monthChange = new EventEmitter();
|
|
16
15
|
this.dayCells = [];
|
|
17
16
|
this.weekDays = [
|
|
18
17
|
{ tag: 'sun' },
|
|
@@ -123,23 +122,26 @@ export class CalendarComponent {
|
|
|
123
122
|
this.setMaxEventsInDayCell();
|
|
124
123
|
});
|
|
125
124
|
}
|
|
125
|
+
ngOnChanges(changes) {
|
|
126
|
+
if (changes['currentMonth']) {
|
|
127
|
+
this.initDaysCells();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
126
130
|
onDestroy() {
|
|
127
131
|
window.removeEventListener('resize', this.resizeListener);
|
|
128
132
|
}
|
|
129
133
|
}
|
|
130
134
|
CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
-
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CalendarComponent, selector: "lib-calendar", inputs: { currentMonth: "currentMonth", events: "events", startAt: "startAt" },
|
|
135
|
+
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CalendarComponent, selector: "lib-calendar", inputs: { currentMonth: "currentMonth", events: "events", startAt: "startAt" }, viewQueries: [{ propertyName: "calendarRef", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "calendarBodyRef", first: true, predicate: ["calendarBody"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-component\">\r\n <div class=\"body\" #calendarBody>\r\n <div class=\"week-days\">\r\n <div class=\"week-day\" *ngFor=\"let day of weekDays\">\r\n {{ day.tag | translate | slice:0:3 }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"days-grid\">\r\n <div class=\"day-cell\" *ngFor=\"let day of dayCells; let i = index\"\r\n [ngClass]=\"{'outside-month': day.isOutsideMonth, 'is-today': day.isToday}\">\r\n <div class=\"day-number\">\r\n {{ day.date.getDate() }}\r\n </div>\r\n\r\n <div class=\"events-list\">\r\n <lib-calendar-event *ngFor=\"let event of day.events | slice:0:maxEventsInDayCell\"\r\n [event]=\"event\"></lib-calendar-event>\r\n\r\n <div class=\"more-events\" *ngIf=\"day.events.length > (maxEventsInDayCell || 0)\"\r\n (click)=\"openMoreEventsModal(day.date, day.events)\">\r\n {{'nMoreEvents' | translate: {n:(day.events.length - (maxEventsInDayCell || 0))} }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n Footer\r\n </div>\r\n\r\n <lib-more-events-modal *ngIf=\"showMoreEventsModal && moreEventsModalDate\" [events]=\"moreEventsModalEvents\"\r\n [date]=\"moreEventsModalDate\" (close)=\"closeMoreEventsModal()\"\r\n (eventClick)=\"closeMoreEventsModal()\"></lib-more-events-modal>\r\n</div>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.calendar-component{display:flex;flex-direction:column;width:100%;height:100%}.body{flex:1 1 0;display:flex;flex-direction:column;width:100%;min-height:0;height:100%}.week-days{flex-shrink:0;display:grid;grid-template-columns:repeat(7,1fr);width:100%;background-color:#f4f4f4}.week-day{display:flex;align-items:center;justify-content:center;padding:4px;background-color:#fff;font-size:14px;color:#00000080}.days-grid{flex:1 1 0;display:grid;grid-template-columns:repeat(7,1fr);gap:1px;grid-auto-rows:1fr;width:100%;padding:1px;background-color:#f4f4f4;min-height:0;height:100%}.day-cell{display:flex;flex-direction:column;gap:4px;padding:4px;background-color:#fff;overflow:hidden}.day-cell .day-number{display:flex;align-items:center;justify-content:center;width:fit-content;aspect-ratio:1;padding:2px;border-radius:50%;font-size:12px;line-height:16px;font-weight:600;-webkit-user-select:none;user-select:none}.day-cell.outside-month{background-color:#f8f8f8}.day-cell.is-today .day-number{background-color:#007bff;color:#fff}.day-cell .events-list{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;overflow:hidden;min-height:0;max-height:100%}.day-cell .events-list .more-events{padding:2px 8px;border-radius:4px;font-size:12px;color:#555;cursor:pointer}.day-cell .events-list .more-events:hover{background-color:#eee}.footer{flex-shrink:0;background-color:#add8e6}\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.CalendarEventComponent, selector: "lib-calendar-event", inputs: ["event"] }, { kind: "component", type: i3.MoreEventsModalComponent, selector: "lib-more-events-modal", inputs: ["events", "date"], outputs: ["close", "eventClick"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
132
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
133
137
|
type: Component,
|
|
134
|
-
args: [{ selector: 'lib-calendar', template: "<div class=\"calendar-component\">\r\n <div class=\"
|
|
138
|
+
args: [{ selector: 'lib-calendar', template: "<div class=\"calendar-component\">\r\n <div class=\"body\" #calendarBody>\r\n <div class=\"week-days\">\r\n <div class=\"week-day\" *ngFor=\"let day of weekDays\">\r\n {{ day.tag | translate | slice:0:3 }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"days-grid\">\r\n <div class=\"day-cell\" *ngFor=\"let day of dayCells; let i = index\"\r\n [ngClass]=\"{'outside-month': day.isOutsideMonth, 'is-today': day.isToday}\">\r\n <div class=\"day-number\">\r\n {{ day.date.getDate() }}\r\n </div>\r\n\r\n <div class=\"events-list\">\r\n <lib-calendar-event *ngFor=\"let event of day.events | slice:0:maxEventsInDayCell\"\r\n [event]=\"event\"></lib-calendar-event>\r\n\r\n <div class=\"more-events\" *ngIf=\"day.events.length > (maxEventsInDayCell || 0)\"\r\n (click)=\"openMoreEventsModal(day.date, day.events)\">\r\n {{'nMoreEvents' | translate: {n:(day.events.length - (maxEventsInDayCell || 0))} }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n Footer\r\n </div>\r\n\r\n <lib-more-events-modal *ngIf=\"showMoreEventsModal && moreEventsModalDate\" [events]=\"moreEventsModalEvents\"\r\n [date]=\"moreEventsModalDate\" (close)=\"closeMoreEventsModal()\"\r\n (eventClick)=\"closeMoreEventsModal()\"></lib-more-events-modal>\r\n</div>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.calendar-component{display:flex;flex-direction:column;width:100%;height:100%}.body{flex:1 1 0;display:flex;flex-direction:column;width:100%;min-height:0;height:100%}.week-days{flex-shrink:0;display:grid;grid-template-columns:repeat(7,1fr);width:100%;background-color:#f4f4f4}.week-day{display:flex;align-items:center;justify-content:center;padding:4px;background-color:#fff;font-size:14px;color:#00000080}.days-grid{flex:1 1 0;display:grid;grid-template-columns:repeat(7,1fr);gap:1px;grid-auto-rows:1fr;width:100%;padding:1px;background-color:#f4f4f4;min-height:0;height:100%}.day-cell{display:flex;flex-direction:column;gap:4px;padding:4px;background-color:#fff;overflow:hidden}.day-cell .day-number{display:flex;align-items:center;justify-content:center;width:fit-content;aspect-ratio:1;padding:2px;border-radius:50%;font-size:12px;line-height:16px;font-weight:600;-webkit-user-select:none;user-select:none}.day-cell.outside-month{background-color:#f8f8f8}.day-cell.is-today .day-number{background-color:#007bff;color:#fff}.day-cell .events-list{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;overflow:hidden;min-height:0;max-height:100%}.day-cell .events-list .more-events{padding:2px 8px;border-radius:4px;font-size:12px;color:#555;cursor:pointer}.day-cell .events-list .more-events:hover{background-color:#eee}.footer{flex-shrink:0;background-color:#add8e6}\n"] }]
|
|
135
139
|
}], ctorParameters: function () { return []; }, propDecorators: { currentMonth: [{
|
|
136
140
|
type: Input
|
|
137
141
|
}], events: [{
|
|
138
142
|
type: Input
|
|
139
143
|
}], startAt: [{
|
|
140
144
|
type: Input
|
|
141
|
-
}], monthChange: [{
|
|
142
|
-
type: Output
|
|
143
145
|
}], calendarRef: [{
|
|
144
146
|
type: ViewChild,
|
|
145
147
|
args: ['calendar']
|
|
@@ -147,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
147
149
|
type: ViewChild,
|
|
148
150
|
args: ['calendarBody']
|
|
149
151
|
}] } });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRckgsTUFBTSxPQUFPLGlCQUFpQjtJQXdDNUI7UUF0Q1MsaUJBQVksR0FBb0M7WUFDdkQsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQzlCLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7U0FDakMsQ0FBQztRQUVPLFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBRTdCLFlBQU8sR0FBd0IsUUFBUSxDQUFDO1FBRXZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBR3BDLENBQUM7UUFVTCxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBRXpCLGFBQVEsR0FBYztZQUNwQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7U0FDZixDQUFD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QUssRUFBRTtnQkFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7Z0JBQ2QsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2FBQ2YsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdkQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs4R0FsS1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsd1hDUjlCLDBxREF1Q007MkZEL0JPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjOzBFQU1mLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtnQixXQUFXO3NCQUFqQyxTQUFTO3VCQUFDLFVBQVU7Z0JBQ00sZUFBZTtzQkFBekMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIERheUNlbGwsIFdlZWtEYXkgfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGN1cnJlbnRNb250aDogeyB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIgfSA9IHtcclxuICAgIHllYXI6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcclxuICAgIG1vbnRoOiBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgZXZlbnRzOiBDYWxlbmRhckV2ZW50W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc3RhcnRBdDogJ21vbmRheScgfCAnc3VuZGF5JyA9ICdzdW5kYXknO1xyXG5cclxuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIG5ld01vbnRoOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciB9LFxyXG4gICAgb2xkTW9udGg6IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyIH1cclxuICB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhckJvZHknKSBjYWxlbmRhckJvZHlSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBjYWxlbmRhcldpZHRoPzogbnVtYmVyO1xyXG4gIGNvbHVtbldpZHRoPzogbnVtYmVyO1xyXG4gIGNhbGVuZGFyQm9keUhlaWdodD86IG51bWJlcjtcclxuICBtYXhFdmVudHNJbkRheUNlbGw/OiBudW1iZXI7XHJcblxyXG4gIGRheUNlbGxzOiBEYXlDZWxsW10gPSBbXTtcclxuXHJcbiAgd2Vla0RheXM6IFdlZWtEYXlbXSA9IFtcclxuICAgIHsgdGFnOiAnc3VuJyB9LFxyXG4gICAgeyB0YWc6ICdtb24nIH0sXHJcbiAgICB7IHRhZzogJ3R1ZScgfSxcclxuICAgIHsgdGFnOiAnd2VkJyB9LFxyXG4gICAgeyB0YWc6ICd0aHUnIH0sXHJcbiAgICB7IHRhZzogJ2ZyaScgfSxcclxuICAgIHsgdGFnOiAnc2F0JyB9LFxyXG4gIF07XHJcblxyXG4gIHNob3dNb3JlRXZlbnRzTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtb3JlRXZlbnRzTW9kYWxEYXRlPzogRGF0ZTtcclxuICBtb3JlRXZlbnRzTW9kYWxFdmVudHM6IENhbGVuZGFyRXZlbnRbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBpc1RvZGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIHJldHVybiBkYXRlLmdldERhdGUoKSA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmXHJcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxyXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudHNGb3JEYXkoZGF0ZTogRGF0ZSk6IENhbGVuZGFyRXZlbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5ldmVudHMuZmlsdGVyKGV2ZW50ID0+IHtcclxuICAgICAgY29uc3QgZXZlbnRTdGFydCA9IG5ldyBEYXRlKGV2ZW50LnN0YXJ0KTtcclxuICAgICAgY29uc3QgZXZlbnRFbmQgPSBldmVudC5lbmQgPyBuZXcgRGF0ZShldmVudC5lbmQpIDogZXZlbnRTdGFydDtcclxuXHJcbiAgICAgIHJldHVybiBkYXRlID49IG5ldyBEYXRlKGV2ZW50U3RhcnQuZ2V0RnVsbFllYXIoKSwgZXZlbnRTdGFydC5nZXRNb250aCgpLCBldmVudFN0YXJ0LmdldERhdGUoKSkgJiZcclxuICAgICAgICBkYXRlIDw9IG5ldyBEYXRlKGV2ZW50RW5kLmdldEZ1bGxZZWFyKCksIGV2ZW50RW5kLmdldE1vbnRoKCksIGV2ZW50RW5kLmdldERhdGUoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXREYXlzQ2VsbHMoKSB7XHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudE1vbnRoLnllYXIsIHRoaXMuY3VycmVudE1vbnRoLm1vbnRoLCAwKS5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IG5ldyBEYXRlKHRoaXMuY3VycmVudE1vbnRoLnllYXIsIHRoaXMuY3VycmVudE1vbnRoLm1vbnRoIC0gMSwgMSkuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBwcmV2RGF5c0NvdW50ID0gdGhpcy5zdGFydEF0ID09PSAnbW9uZGF5JyA/IChmaXJzdERheU9mV2VlayA9PT0gMCA/IDYgOiBmaXJzdERheU9mV2VlayAtIDEpIDogZmlyc3REYXlPZldlZWs7XHJcbiAgICAvLyBjb25zdCBuZXh0RGF5c0NvdW50ID0gKDcgLSAoKHByZXZEYXlzQ291bnQgKyBkYXlzSW5Nb250aCkgJSA3KSkgJSA3O1xyXG4gICAgY29uc3QgbmV4dERheXNDb3VudCA9IDQyIC0gKHByZXZEYXlzQ291bnQgKyBkYXlzSW5Nb250aCk7IC8vIEFsd2F5cyBzaG93IDYgd2Vla3NcclxuXHJcbiAgICB0aGlzLmRheUNlbGxzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2RGF5c0NvdW50OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudE1vbnRoLnllYXIsIHRoaXMuY3VycmVudE1vbnRoLm1vbnRoIC0gMSwgaSAtIHByZXZEYXlzQ291bnQgKyAxKTtcclxuICAgICAgY29uc3QgX2V2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzRm9yRGF5KGRhdGUpO1xyXG5cclxuICAgICAgdGhpcy5kYXlDZWxscy5wdXNoKHtcclxuICAgICAgICBkYXRlLFxyXG4gICAgICAgIGV2ZW50czogX2V2ZW50cyxcclxuICAgICAgICBpc091dHNpZGVNb250aDogdHJ1ZSxcclxuICAgICAgICBpc1RvZGF5OiB0aGlzLmlzVG9kYXkoZGF0ZSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgZGF5ID0gMTsgZGF5IDw9IGRheXNJbk1vbnRoOyBkYXkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxLCBkYXkpO1xyXG4gICAgICBjb25zdCBfZXZlbnRzID0gdGhpcy5nZXRFdmVudHNGb3JEYXkoZGF0ZSk7XHJcblxyXG4gICAgICB0aGlzLmRheUNlbGxzLnB1c2goe1xyXG4gICAgICAgIGRhdGUsXHJcbiAgICAgICAgZXZlbnRzOiBfZXZlbnRzLFxyXG4gICAgICAgIGlzVG9kYXk6IHRoaXMuaXNUb2RheShkYXRlKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBuZXh0RGF5c0NvdW50OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudE1vbnRoLnllYXIsIHRoaXMuY3VycmVudE1vbnRoLm1vbnRoIC0gMSwgZGF5c0luTW9udGggKyBpKTtcclxuICAgICAgY29uc3QgX2V2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzRm9yRGF5KGRhdGUpO1xyXG5cclxuICAgICAgdGhpcy5kYXlDZWxscy5wdXNoKHtcclxuICAgICAgICBkYXRlLFxyXG4gICAgICAgIGV2ZW50czogX2V2ZW50cyxcclxuICAgICAgICBpc091dHNpZGVNb250aDogdHJ1ZSxcclxuICAgICAgICBpc1RvZGF5OiB0aGlzLmlzVG9kYXkoZGF0ZSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYWxlbmRhckJvZHlIZWlnaHQoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyQm9keUhlaWdodCA9IHRoaXMuY2FsZW5kYXJCb2R5UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgc2V0TWF4RXZlbnRzSW5EYXlDZWxsKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2V2ZW50cy1saXN0JylbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zb2xlLmxvZyhlbGVtZW50KTtcclxuXHJcbiAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICBjb25zdCBldmVudEl0ZW1IZWlnaHQgPSAyMjtcclxuICAgICAgdGhpcy5tYXhFdmVudHNJbkRheUNlbGwgPSBNYXRoLmZsb29yKGVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gZXZlbnRJdGVtSGVpZ2h0KSAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTW9yZUV2ZW50c01vZGFsKGRhdGU6IERhdGUsIGV2ZW50czogQ2FsZW5kYXJFdmVudFtdKSB7XHJcbiAgICB0aGlzLm1vcmVFdmVudHNNb2RhbERhdGUgPSBkYXRlO1xyXG4gICAgdGhpcy5tb3JlRXZlbnRzTW9kYWxFdmVudHMgPSBldmVudHM7XHJcbiAgICB0aGlzLnNob3dNb3JlRXZlbnRzTW9kYWwgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VNb3JlRXZlbnRzTW9kYWwoKSB7XHJcbiAgICB0aGlzLnNob3dNb3JlRXZlbnRzTW9kYWwgPSBmYWxzZTtcclxuICAgIHRoaXMubW9yZUV2ZW50c01vZGFsRGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubW9yZUV2ZW50c01vZGFsRXZlbnRzID0gW107XHJcbiAgfVxyXG5cclxuICByZXNpemVMaXN0ZW5lciA9ICgpID0+IHtcclxuICAgIHRoaXMuc2V0Q2FsZW5kYXJCb2R5SGVpZ2h0KCk7XHJcbiAgICB0aGlzLnNldE1heEV2ZW50c0luRGF5Q2VsbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdGFydEF0ID09PSAnbW9uZGF5Jykge1xyXG4gICAgICB0aGlzLndlZWtEYXlzID0gW1xyXG4gICAgICAgIHsgdGFnOiAnbW9uJyB9LFxyXG4gICAgICAgIHsgdGFnOiAndHVlJyB9LFxyXG4gICAgICAgIHsgdGFnOiAnd2VkJyB9LFxyXG4gICAgICAgIHsgdGFnOiAndGh1JyB9LFxyXG4gICAgICAgIHsgdGFnOiAnZnJpJyB9LFxyXG4gICAgICAgIHsgdGFnOiAnc2F0JyB9LFxyXG4gICAgICAgIHsgdGFnOiAnc3VuJyB9LFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdERheXNDZWxscygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplTGlzdGVuZXIpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldENhbGVuZGFyQm9keUhlaWdodCgpO1xyXG4gICAgICB0aGlzLnNldE1heEV2ZW50c0luRGF5Q2VsbCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb21wb25lbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICBIZWFkZXIge3sgbWF4RXZlbnRzSW5EYXlDZWxsIH19XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICNjYWxlbmRhckJvZHk+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1kYXlcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtEYXlzXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXkudGFnIHwgdHJhbnNsYXRlIHwgc2xpY2U6MDozIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1ncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktY2VsbFwiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5Q2VsbHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydvdXRzaWRlLW1vbnRoJzogZGF5LmlzT3V0c2lkZU1vbnRoLCAnaXMtdG9kYXknOiBkYXkuaXNUb2RheX1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktbnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF5LmRhdGUuZ2V0RGF0ZSgpIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRzLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWNhbGVuZGFyLWV2ZW50ICpuZ0Zvcj1cImxldCBldmVudCBvZiBkYXkuZXZlbnRzIHwgc2xpY2U6MDptYXhFdmVudHNJbkRheUNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXZlbnRdPVwiZXZlbnRcIj48L2xpYi1jYWxlbmRhci1ldmVudD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vcmUtZXZlbnRzXCIgKm5nSWY9XCJkYXkuZXZlbnRzLmxlbmd0aCA+IChtYXhFdmVudHNJbkRheUNlbGwgfHwgMClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk1vcmVFdmVudHNNb2RhbChkYXkuZGF0ZSwgZGF5LmV2ZW50cylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snbk1vcmVFdmVudHMnIHwgdHJhbnNsYXRlOiB7bjooZGF5LmV2ZW50cy5sZW5ndGggLSAobWF4RXZlbnRzSW5EYXlDZWxsIHx8IDApKX0gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICBGb290ZXJcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxsaWItbW9yZS1ldmVudHMtbW9kYWwgKm5nSWY9XCJzaG93TW9yZUV2ZW50c01vZGFsICYmIG1vcmVFdmVudHNNb2RhbERhdGVcIiBbZXZlbnRzXT1cIm1vcmVFdmVudHNNb2RhbEV2ZW50c1wiXHJcbiAgICAgICAgW2RhdGVdPVwibW9yZUV2ZW50c01vZGFsRGF0ZVwiIChjbG9zZSk9XCJjbG9zZU1vcmVFdmVudHNNb2RhbCgpXCJcclxuICAgICAgICAoZXZlbnRDbGljayk9XCJjbG9zZU1vcmVFdmVudHNNb2RhbCgpXCI+PC9saWItbW9yZS1ldmVudHMtbW9kYWw+XHJcbjwvZGl2PiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQTBDLEtBQUssRUFBNEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRN0osTUFBTSxPQUFPLGlCQUFpQjtJQW1DNUI7UUFqQ1MsaUJBQVksR0FBb0M7WUFDdkQsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQzlCLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7U0FDakMsQ0FBQztRQUVPLFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBRTdCLFlBQU8sR0FBd0IsUUFBUSxDQUFDO1FBVWpELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFjO1lBQ3BCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtTQUNmLENBQUM7UUFFRix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsMEJBQXFCLEdBQW9CLEVBQUUsQ0FB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RUFBRSxLQUFLLEVBQUU7YUFDZixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7OEdBbktVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9XQ1I5Qiwra0RBbUNNOzJGRDNCTyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzswRUFNZixZQUFZO3NCQUFwQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRWlCLFdBQVc7c0JBQWpDLFNBQVM7dUJBQUMsVUFBVTtnQkFDTSxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIERheUNlbGwsIFdlZWtEYXkgfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgY3VycmVudE1vbnRoOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciB9ID0ge1xyXG4gICAgeWVhcjogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxyXG4gICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDFcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBldmVudHM6IENhbGVuZGFyRXZlbnRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBzdGFydEF0OiAnbW9uZGF5JyB8ICdzdW5kYXknID0gJ3N1bmRheSc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJykgY2FsZW5kYXJSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyQm9keScpIGNhbGVuZGFyQm9keVJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhbGVuZGFyV2lkdGg/OiBudW1iZXI7XHJcbiAgY29sdW1uV2lkdGg/OiBudW1iZXI7XHJcbiAgY2FsZW5kYXJCb2R5SGVpZ2h0PzogbnVtYmVyO1xyXG4gIG1heEV2ZW50c0luRGF5Q2VsbD86IG51bWJlcjtcclxuXHJcbiAgZGF5Q2VsbHM6IERheUNlbGxbXSA9IFtdO1xyXG5cclxuICB3ZWVrRGF5czogV2Vla0RheVtdID0gW1xyXG4gICAgeyB0YWc6ICdzdW4nIH0sXHJcbiAgICB7IHRhZzogJ21vbicgfSxcclxuICAgIHsgdGFnOiAndHVlJyB9LFxyXG4gICAgeyB0YWc6ICd3ZWQnIH0sXHJcbiAgICB7IHRhZzogJ3RodScgfSxcclxuICAgIHsgdGFnOiAnZnJpJyB9LFxyXG4gICAgeyB0YWc6ICdzYXQnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2hvd01vcmVFdmVudHNNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vcmVFdmVudHNNb2RhbERhdGU/OiBEYXRlO1xyXG4gIG1vcmVFdmVudHNNb2RhbEV2ZW50czogQ2FsZW5kYXJFdmVudFtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGlzVG9kYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKCkgJiZcclxuICAgICAgZGF0ZS5nZXRNb250aCgpID09PSB0b2RheS5nZXRNb250aCgpICYmXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdG9kYXkuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4gIGdldEV2ZW50c0ZvckRheShkYXRlOiBEYXRlKTogQ2FsZW5kYXJFdmVudFtdIHtcclxuICAgIHJldHVybiB0aGlzLmV2ZW50cy5maWx0ZXIoZXZlbnQgPT4ge1xyXG4gICAgICBjb25zdCBldmVudFN0YXJ0ID0gbmV3IERhdGUoZXZlbnQuc3RhcnQpO1xyXG4gICAgICBjb25zdCBldmVudEVuZCA9IGV2ZW50LmVuZCA/IG5ldyBEYXRlKGV2ZW50LmVuZCkgOiBldmVudFN0YXJ0O1xyXG5cclxuICAgICAgcmV0dXJuIGRhdGUgPj0gbmV3IERhdGUoZXZlbnRTdGFydC5nZXRGdWxsWWVhcigpLCBldmVudFN0YXJ0LmdldE1vbnRoKCksIGV2ZW50U3RhcnQuZ2V0RGF0ZSgpKSAmJlxyXG4gICAgICAgIGRhdGUgPD0gbmV3IERhdGUoZXZlbnRFbmQuZ2V0RnVsbFllYXIoKSwgZXZlbnRFbmQuZ2V0TW9udGgoKSwgZXZlbnRFbmQuZ2V0RGF0ZSgpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdERheXNDZWxscygpIHtcclxuICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGgsIDApLmdldERhdGUoKTtcclxuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxLCAxKS5nZXREYXkoKTtcclxuICAgIGNvbnN0IHByZXZEYXlzQ291bnQgPSB0aGlzLnN0YXJ0QXQgPT09ICdtb25kYXknID8gKGZpcnN0RGF5T2ZXZWVrID09PSAwID8gNiA6IGZpcnN0RGF5T2ZXZWVrIC0gMSkgOiBmaXJzdERheU9mV2VlaztcclxuICAgIC8vIGNvbnN0IG5leHREYXlzQ291bnQgPSAoNyAtICgocHJldkRheXNDb3VudCArIGRheXNJbk1vbnRoKSAlIDcpKSAlIDc7XHJcbiAgICBjb25zdCBuZXh0RGF5c0NvdW50ID0gNDIgLSAocHJldkRheXNDb3VudCArIGRheXNJbk1vbnRoKTsgLy8gQWx3YXlzIHNob3cgNiB3ZWVrc1xyXG5cclxuICAgIHRoaXMuZGF5Q2VsbHMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZEYXlzQ291bnQ7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxLCBpIC0gcHJldkRheXNDb3VudCArIDEpO1xyXG4gICAgICBjb25zdCBfZXZlbnRzID0gdGhpcy5nZXRFdmVudHNGb3JEYXkoZGF0ZSk7XHJcblxyXG4gICAgICB0aGlzLmRheUNlbGxzLnB1c2goe1xyXG4gICAgICAgIGRhdGUsXHJcbiAgICAgICAgZXZlbnRzOiBfZXZlbnRzLFxyXG4gICAgICAgIGlzT3V0c2lkZU1vbnRoOiB0cnVlLFxyXG4gICAgICAgIGlzVG9kYXk6IHRoaXMuaXNUb2RheShkYXRlKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBkYXkgPSAxOyBkYXkgPD0gZGF5c0luTW9udGg7IGRheSsrKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRNb250aC55ZWFyLCB0aGlzLmN1cnJlbnRNb250aC5tb250aCAtIDEsIGRheSk7XHJcbiAgICAgIGNvbnN0IF9ldmVudHMgPSB0aGlzLmdldEV2ZW50c0ZvckRheShkYXRlKTtcclxuXHJcbiAgICAgIHRoaXMuZGF5Q2VsbHMucHVzaCh7XHJcbiAgICAgICAgZGF0ZSxcclxuICAgICAgICBldmVudHM6IF9ldmVudHMsXHJcbiAgICAgICAgaXNUb2RheTogdGhpcy5pc1RvZGF5KGRhdGUpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IG5leHREYXlzQ291bnQ7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxLCBkYXlzSW5Nb250aCArIGkpO1xyXG4gICAgICBjb25zdCBfZXZlbnRzID0gdGhpcy5nZXRFdmVudHNGb3JEYXkoZGF0ZSk7XHJcblxyXG4gICAgICB0aGlzLmRheUNlbGxzLnB1c2goe1xyXG4gICAgICAgIGRhdGUsXHJcbiAgICAgICAgZXZlbnRzOiBfZXZlbnRzLFxyXG4gICAgICAgIGlzT3V0c2lkZU1vbnRoOiB0cnVlLFxyXG4gICAgICAgIGlzVG9kYXk6IHRoaXMuaXNUb2RheShkYXRlKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENhbGVuZGFyQm9keUhlaWdodCgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJCb2R5SGVpZ2h0ID0gdGhpcy5jYWxlbmRhckJvZHlSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBzZXRNYXhFdmVudHNJbkRheUNlbGwoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZXZlbnRzLWxpc3QnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnNvbGUubG9nKGVsZW1lbnQpO1xyXG5cclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50SXRlbUhlaWdodCA9IDIyO1xyXG4gICAgICB0aGlzLm1heEV2ZW50c0luRGF5Q2VsbCA9IE1hdGguZmxvb3IoZWxlbWVudC5jbGllbnRIZWlnaHQgLyBldmVudEl0ZW1IZWlnaHQpIC0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Nb3JlRXZlbnRzTW9kYWwoZGF0ZTogRGF0ZSwgZXZlbnRzOiBDYWxlbmRhckV2ZW50W10pIHtcclxuICAgIHRoaXMubW9yZUV2ZW50c01vZGFsRGF0ZSA9IGRhdGU7XHJcbiAgICB0aGlzLm1vcmVFdmVudHNNb2RhbEV2ZW50cyA9IGV2ZW50cztcclxuICAgIHRoaXMuc2hvd01vcmVFdmVudHNNb2RhbCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1vcmVFdmVudHNNb2RhbCgpIHtcclxuICAgIHRoaXMuc2hvd01vcmVFdmVudHNNb2RhbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5tb3JlRXZlbnRzTW9kYWxEYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5tb3JlRXZlbnRzTW9kYWxFdmVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIHJlc2l6ZUxpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zZXRDYWxlbmRhckJvZHlIZWlnaHQoKTtcclxuICAgIHRoaXMuc2V0TWF4RXZlbnRzSW5EYXlDZWxsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN0YXJ0QXQgPT09ICdtb25kYXknKSB7XHJcbiAgICAgIHRoaXMud2Vla0RheXMgPSBbXHJcbiAgICAgICAgeyB0YWc6ICdtb24nIH0sXHJcbiAgICAgICAgeyB0YWc6ICd0dWUnIH0sXHJcbiAgICAgICAgeyB0YWc6ICd3ZWQnIH0sXHJcbiAgICAgICAgeyB0YWc6ICd0aHUnIH0sXHJcbiAgICAgICAgeyB0YWc6ICdmcmknIH0sXHJcbiAgICAgICAgeyB0YWc6ICdzYXQnIH0sXHJcbiAgICAgICAgeyB0YWc6ICdzdW4nIH0sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0RGF5c0NlbGxzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJCb2R5SGVpZ2h0KCk7XHJcbiAgICAgIHRoaXMuc2V0TWF4RXZlbnRzSW5EYXlDZWxsKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydjdXJyZW50TW9udGgnXSkge1xyXG4gICAgICB0aGlzLmluaXREYXlzQ2VsbHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbXBvbmVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIiAjY2FsZW5kYXJCb2R5PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5XCIgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5c1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZGF5LnRhZyB8IHRyYW5zbGF0ZSB8IHNsaWNlOjA6MyB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LWNlbGxcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheUNlbGxzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnb3V0c2lkZS1tb250aCc6IGRheS5pc091dHNpZGVNb250aCwgJ2lzLXRvZGF5JzogZGF5LmlzVG9kYXl9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LW51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRheS5kYXRlLmdldERhdGUoKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50cy1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpYi1jYWxlbmRhci1ldmVudCAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgZGF5LmV2ZW50cyB8IHNsaWNlOjA6bWF4RXZlbnRzSW5EYXlDZWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2V2ZW50XT1cImV2ZW50XCI+PC9saWItY2FsZW5kYXItZXZlbnQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWV2ZW50c1wiICpuZ0lmPVwiZGF5LmV2ZW50cy5sZW5ndGggPiAobWF4RXZlbnRzSW5EYXlDZWxsIHx8IDApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Nb3JlRXZlbnRzTW9kYWwoZGF5LmRhdGUsIGRheS5ldmVudHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J25Nb3JlRXZlbnRzJyB8IHRyYW5zbGF0ZToge246KGRheS5ldmVudHMubGVuZ3RoIC0gKG1heEV2ZW50c0luRGF5Q2VsbCB8fCAwKSl9IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgRm9vdGVyXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bGliLW1vcmUtZXZlbnRzLW1vZGFsICpuZ0lmPVwic2hvd01vcmVFdmVudHNNb2RhbCAmJiBtb3JlRXZlbnRzTW9kYWxEYXRlXCIgW2V2ZW50c109XCJtb3JlRXZlbnRzTW9kYWxFdmVudHNcIlxyXG4gICAgICAgIFtkYXRlXT1cIm1vcmVFdmVudHNNb2RhbERhdGVcIiAoY2xvc2UpPVwiY2xvc2VNb3JlRXZlbnRzTW9kYWwoKVwiXHJcbiAgICAgICAgKGV2ZW50Q2xpY2spPVwiY2xvc2VNb3JlRXZlbnRzTW9kYWwoKVwiPjwvbGliLW1vcmUtZXZlbnRzLW1vZGFsPlxyXG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../calendar-event/calendar-event.component";
|
|
5
|
+
import * as i3 from "../duration-event/duration-event.component";
|
|
6
|
+
import * as i4 from "../../pipes/translate.pipe";
|
|
7
|
+
export class DayComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.events = [];
|
|
10
|
+
this.hourBlocks = Array.from({ length: 24 }, (_, i) => i);
|
|
11
|
+
this.allDayEvents = [];
|
|
12
|
+
this.allDayHeight = 60;
|
|
13
|
+
this.eventCols = [];
|
|
14
|
+
this.resizing = false;
|
|
15
|
+
this.startY = 0;
|
|
16
|
+
this.startHeight = 0;
|
|
17
|
+
this.onResizeMouseMove = (event) => {
|
|
18
|
+
if (!this.resizing)
|
|
19
|
+
return;
|
|
20
|
+
const delta = event.clientY - this.startY;
|
|
21
|
+
const newHeight = this.startHeight + delta;
|
|
22
|
+
this.allDayHeight = Math.max(60, newHeight); // mínimo 80px
|
|
23
|
+
};
|
|
24
|
+
this.onResizeMouseUp = () => {
|
|
25
|
+
this.resizing = false;
|
|
26
|
+
document.removeEventListener('mousemove', this.onResizeMouseMove);
|
|
27
|
+
document.removeEventListener('mouseup', this.onResizeMouseUp);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
this.initEventCols();
|
|
32
|
+
}
|
|
33
|
+
findAvalailableColumn(event) {
|
|
34
|
+
for (let colIndex = 0; colIndex < this.eventCols.length; colIndex++) {
|
|
35
|
+
const col = this.eventCols[colIndex];
|
|
36
|
+
// conflict if event overlaps with any existing event in the column
|
|
37
|
+
const hasConflict = col.events.some(existingEvent => {
|
|
38
|
+
const startsDuringExisting = event.start < existingEvent.end && event.start >= existingEvent.start;
|
|
39
|
+
const endsDuringExisting = event.end > existingEvent.start && event.end <= existingEvent.end;
|
|
40
|
+
const spansExisting = event.start <= existingEvent.start && event.end >= existingEvent.end;
|
|
41
|
+
return startsDuringExisting || endsDuringExisting || spansExisting;
|
|
42
|
+
});
|
|
43
|
+
if (!hasConflict) {
|
|
44
|
+
return colIndex;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return this.eventCols.length;
|
|
48
|
+
}
|
|
49
|
+
addEventToEventCols(event) {
|
|
50
|
+
const colIndex = this.findAvalailableColumn(event);
|
|
51
|
+
if (colIndex === this.eventCols.length) {
|
|
52
|
+
this.eventCols.push({ events: [event] });
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.eventCols[colIndex].events.push(event);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
addEvent(event) {
|
|
59
|
+
if (event.allDay)
|
|
60
|
+
this.allDayEvents.push(event);
|
|
61
|
+
else
|
|
62
|
+
this.addEventToEventCols(event);
|
|
63
|
+
}
|
|
64
|
+
initEventCols() {
|
|
65
|
+
this.eventCols = [];
|
|
66
|
+
this.allDayEvents = [];
|
|
67
|
+
this.events.forEach(event => this.addEvent(event));
|
|
68
|
+
}
|
|
69
|
+
ngOnChanges(changes) {
|
|
70
|
+
if (changes['events']) {
|
|
71
|
+
this.initEventCols();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
onResizeMouseDown(event) {
|
|
75
|
+
this.resizing = true;
|
|
76
|
+
this.startY = event.clientY;
|
|
77
|
+
this.startHeight = this.allDayHeight;
|
|
78
|
+
document.addEventListener('mousemove', this.onResizeMouseMove);
|
|
79
|
+
document.addEventListener('mouseup', this.onResizeMouseUp);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
DayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
DayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DayComponent, selector: "lib-day", inputs: { events: "events", date: "date" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"day-view-component\">\n <section class=\"all-day-events\" [style.height.px]=\"allDayHeight\">\n <div class=\"header\">\n {{'allDayEvents' | translate}}\n </div>\n\n <div class=\"events-container\">\n <lib-calendar-event *ngFor=\"let event of allDayEvents\" [event]=\"event\"></lib-calendar-event>\n </div>\n </section>\n\n <div class=\"resize-divider\" (mousedown)=\"onResizeMouseDown($event)\"></div>\n\n <section class=\"duration-events\">\n <div class=\"hour-blocks\">\n <div class=\"hour-block\" *ngFor=\"let hour of hourBlocks\">\n <span>{{ hour }}:00</span>\n </div>\n </div>\n\n <div class=\"events-wrapper\">\n <div class=\"time-blocks\">\n <div class=\"time-block\" *ngFor=\"let hour of hourBlocks\">\n <div class=\"time-block-middle\"></div>\n </div>\n </div>\n\n <div class=\"events-container\" [style.gridTemplateColumns]=\"'repeat(' + eventCols.length + ', 1fr)'\">\n <div class=\"event-column\" *ngFor=\"let col of eventCols\">\n\n <lib-duration-event *ngFor=\"let event of col.events\" [event]=\"event\"\n [date]=\"date\"></lib-duration-event>\n\n </div>\n </div>\n </div>\n </section>\n</div>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.day-view-component{display:flex;flex-direction:column;width:100%;height:100%;max-height:100%;overflow:hidden}section.all-day-events{position:relative;flex-shrink:0;display:flex;flex-direction:column;width:100%;min-height:60px;border-top:1px solid rgba(0,0,0,.12);overflow:auto}section.all-day-events .header{position:sticky;top:0;left:0;z-index:2;width:100%;flex-shrink:0;padding:2px 8px;background-color:#fff;font-size:12px;color:#000000b3;-webkit-user-select:none;user-select:none}section.all-day-events .events-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px;padding:4px}section.duration-events{flex-grow:1;display:flex;width:100%;overflow:auto}section.duration-events .hour-blocks{display:flex;flex-direction:column;width:45px;-webkit-user-select:none;user-select:none}section.duration-events .hour-blocks .hour-block{flex-shrink:0;height:60px;padding:4px;border:1px solid rgba(0,0,0,.12);border-top:none;font-size:12px;color:#00000080}section.duration-events .events-wrapper{position:relative;flex-grow:1;width:100%}section.duration-events .events-wrapper .time-blocks{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;display:flex;flex-direction:column}section.duration-events .events-wrapper .time-blocks .time-block{flex-shrink:0;height:60px;padding:4px;border-bottom:1px solid rgba(0,0,0,.12);border-top:none;font-size:12px;color:#00000080}section.duration-events .events-wrapper .time-blocks .time-block .time-block-middle{width:100%;height:50%;border-bottom:1px dashed rgba(0,0,0,.12)}section.duration-events .events-wrapper .events-container{display:grid;column-gap:1px}section.duration-events .events-wrapper .events-container .event-column{position:relative}.resize-divider{flex-shrink:0;width:100%;height:4px;background-color:#0000001f;cursor:row-resize;transition:transform .2s ease}.resize-divider:hover{z-index:5;background:repeating-linear-gradient(45deg,rgba(0,0,0,.12),rgba(0,0,0,.12) 4px,#ffffff 4px,#ffffff 8px);background-color:#fff;background-size:22px 8px;animation:stripe-move 1s linear infinite;transform:scaleY(2)}@keyframes stripe-move{0%{background-position:0 0}to{background-position:22px 0}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.CalendarEventComponent, selector: "lib-calendar-event", inputs: ["event"] }, { kind: "component", type: i3.DurationEventComponent, selector: "lib-duration-event", inputs: ["event", "date"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DayComponent, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'lib-day', template: "<div class=\"day-view-component\">\n <section class=\"all-day-events\" [style.height.px]=\"allDayHeight\">\n <div class=\"header\">\n {{'allDayEvents' | translate}}\n </div>\n\n <div class=\"events-container\">\n <lib-calendar-event *ngFor=\"let event of allDayEvents\" [event]=\"event\"></lib-calendar-event>\n </div>\n </section>\n\n <div class=\"resize-divider\" (mousedown)=\"onResizeMouseDown($event)\"></div>\n\n <section class=\"duration-events\">\n <div class=\"hour-blocks\">\n <div class=\"hour-block\" *ngFor=\"let hour of hourBlocks\">\n <span>{{ hour }}:00</span>\n </div>\n </div>\n\n <div class=\"events-wrapper\">\n <div class=\"time-blocks\">\n <div class=\"time-block\" *ngFor=\"let hour of hourBlocks\">\n <div class=\"time-block-middle\"></div>\n </div>\n </div>\n\n <div class=\"events-container\" [style.gridTemplateColumns]=\"'repeat(' + eventCols.length + ', 1fr)'\">\n <div class=\"event-column\" *ngFor=\"let col of eventCols\">\n\n <lib-duration-event *ngFor=\"let event of col.events\" [event]=\"event\"\n [date]=\"date\"></lib-duration-event>\n\n </div>\n </div>\n </div>\n </section>\n</div>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.day-view-component{display:flex;flex-direction:column;width:100%;height:100%;max-height:100%;overflow:hidden}section.all-day-events{position:relative;flex-shrink:0;display:flex;flex-direction:column;width:100%;min-height:60px;border-top:1px solid rgba(0,0,0,.12);overflow:auto}section.all-day-events .header{position:sticky;top:0;left:0;z-index:2;width:100%;flex-shrink:0;padding:2px 8px;background-color:#fff;font-size:12px;color:#000000b3;-webkit-user-select:none;user-select:none}section.all-day-events .events-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px;padding:4px}section.duration-events{flex-grow:1;display:flex;width:100%;overflow:auto}section.duration-events .hour-blocks{display:flex;flex-direction:column;width:45px;-webkit-user-select:none;user-select:none}section.duration-events .hour-blocks .hour-block{flex-shrink:0;height:60px;padding:4px;border:1px solid rgba(0,0,0,.12);border-top:none;font-size:12px;color:#00000080}section.duration-events .events-wrapper{position:relative;flex-grow:1;width:100%}section.duration-events .events-wrapper .time-blocks{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;display:flex;flex-direction:column}section.duration-events .events-wrapper .time-blocks .time-block{flex-shrink:0;height:60px;padding:4px;border-bottom:1px solid rgba(0,0,0,.12);border-top:none;font-size:12px;color:#00000080}section.duration-events .events-wrapper .time-blocks .time-block .time-block-middle{width:100%;height:50%;border-bottom:1px dashed rgba(0,0,0,.12)}section.duration-events .events-wrapper .events-container{display:grid;column-gap:1px}section.duration-events .events-wrapper .events-container .event-column{position:relative}.resize-divider{flex-shrink:0;width:100%;height:4px;background-color:#0000001f;cursor:row-resize;transition:transform .2s ease}.resize-divider:hover{z-index:5;background:repeating-linear-gradient(45deg,rgba(0,0,0,.12),rgba(0,0,0,.12) 4px,#ffffff 4px,#ffffff 8px);background-color:#fff;background-size:22px 8px;animation:stripe-move 1s linear infinite;transform:scaleY(2)}@keyframes stripe-move{0%{background-position:0 0}to{background-position:22px 0}}\n"] }]
|
|
87
|
+
}], ctorParameters: function () { return []; }, propDecorators: { events: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], date: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}] } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWFuZ3VsYXItY2FsZW5kYXIvc3JjL2xpYi9jb21wb25lbnRzL2RheS9kYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvZGF5L2RheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVFuRixNQUFNLE9BQU8sWUFBWTtJQWN2QjtRQVpTLFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBR3RDLGVBQVUsR0FBYSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0QsaUJBQVksR0FBb0IsRUFBRSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGNBQVMsR0FFSCxFQUFFLENBQUM7UUFxREQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFVeEIsc0JBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFRLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU87WUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxF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dEI7SUFDSCxDQUFDO0lBTUQsaUJBQWlCLENBQUMsS0FBaUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNyQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7O3lHQTNFVSxZQUFZOzZGQUFaLFlBQVksZ0hDUnpCLDA0Q0FxQ007MkZEN0JPLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUzswRUFNVixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGV2ZW50czogQ2FsZW5kYXJFdmVudFtdID0gW107XG4gIEBJbnB1dCgpIGRhdGUhOiBEYXRlO1xuXG4gIGhvdXJCbG9ja3M6IG51bWJlcltdID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IGkpO1xuXG4gIGFsbERheUV2ZW50czogQ2FsZW5kYXJFdmVudFtdID0gW107XG4gIGFsbERheUhlaWdodCA9IDYwO1xuXG4gIGV2ZW50Q29sczoge1xuICAgIGV2ZW50czogQ2FsZW5kYXJFdmVudFtdO1xuICB9W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEV2ZW50Q29scygpO1xuICB9XG5cbiAgZmluZEF2YWxhaWxhYmxlQ29sdW1uKGV2ZW50OiBDYWxlbmRhckV2ZW50KTogbnVtYmVyIHtcbiAgICBmb3IgKGxldCBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwgdGhpcy5ldmVudENvbHMubGVuZ3RoOyBjb2xJbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2wgPSB0aGlzLmV2ZW50Q29sc1tjb2xJbmRleF07XG5cbiAgICAgIC8vIGNvbmZsaWN0IGlmIGV2ZW50IG92ZXJsYXBzIHdpdGggYW55IGV4aXN0aW5nIGV2ZW50IGluIHRoZSBjb2x1bW5cbiAgICAgIGNvbnN0IGhhc0NvbmZsaWN0ID0gY29sLmV2ZW50cy5zb21lKGV4aXN0aW5nRXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBzdGFydHNEdXJpbmdFeGlzdGluZyA9IGV2ZW50LnN0YXJ0IDwgZXhpc3RpbmdFdmVudC5lbmQhICYmIGV2ZW50LnN0YXJ0ID49IGV4aXN0aW5nRXZlbnQuc3RhcnQ7XG4gICAgICAgIGNvbnN0IGVuZHNEdXJpbmdFeGlzdGluZyA9IGV2ZW50LmVuZCEgPiBleGlzdGluZ0V2ZW50LnN0YXJ0ICYmIGV2ZW50LmVuZCEgPD0gZXhpc3RpbmdFdmVudC5lbmQhO1xuICAgICAgICBjb25zdCBzcGFuc0V4aXN0aW5nID0gZXZlbnQuc3RhcnQgPD0gZXhpc3RpbmdFdmVudC5zdGFydCAmJiBldmVudC5lbmQhID49IGV4aXN0aW5nRXZlbnQuZW5kITtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c0R1cmluZ0V4aXN0aW5nIHx8IGVuZHNEdXJpbmdFeGlzdGluZyB8fCBzcGFuc0V4aXN0aW5nO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghaGFzQ29uZmxpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbEluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ldmVudENvbHMubGVuZ3RoO1xuICB9XG5cbiAgYWRkRXZlbnRUb0V2ZW50Q29scyhldmVudDogQ2FsZW5kYXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbEluZGV4ID0gdGhpcy5maW5kQXZhbGFpbGFibGVDb2x1bW4oZXZlbnQpO1xuICAgIGlmIChjb2xJbmRleCA9PT0gdGhpcy5ldmVudENvbHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmV2ZW50Q29scy5wdXNoKHsgZXZlbnRzOiBbZXZlbnRdIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV2ZW50Q29sc1tjb2xJbmRleF0uZXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEV2ZW50KGV2ZW50OiBDYWxlbmRhckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFsbERheSkgdGhpcy5hbGxEYXlFdmVudHMucHVzaChldmVudCk7XG4gICAgZWxzZSB0aGlzLmFkZEV2ZW50VG9FdmVudENvbHMoZXZlbnQpO1xuICB9XG5cbiAgaW5pdEV2ZW50Q29scygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50Q29scyA9IFtdO1xuICAgIHRoaXMuYWxsRGF5RXZlbnRzID0gW107XG4gICAgdGhpcy5ldmVudHMuZm9yRWFjaChldmVudCA9PiB0aGlzLmFkZEV2ZW50KGV2ZW50KSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2V2ZW50cyddKSB7XG4gICAgICB0aGlzLmluaXRFdmVudENvbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2l6aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhcnRZID0gMDtcbiAgcHJpdmF0ZSBzdGFydEhlaWdodCA9IDA7XG5cbiAgb25SZXNpemVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6aW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50LmNsaWVudFk7XG4gICAgdGhpcy5zdGFydEhlaWdodCA9IHRoaXMuYWxsRGF5SGVpZ2h0O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplTW91c2VVcCk7XG4gIH1cblxuICBvblJlc2l6ZU1vdXNlTW92ZSA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5yZXNpemluZykgcmV0dXJuO1xuICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuY2xpZW50WSAtIHRoaXMuc3RhcnRZO1xuICAgIGNvbnN0IG5ld0hlaWdodCA9IHRoaXMuc3RhcnRIZWlnaHQgKyBkZWx0YTtcbiAgICB0aGlzLmFsbERheUhlaWdodCA9IE1hdGgubWF4KDYwLCBuZXdIZWlnaHQpOyAvLyBtw61uaW1vIDgwcHhcbiAgfTtcblxuICBvblJlc2l6ZU1vdXNlVXAgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5yZXNpemluZyA9IGZhbHNlO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplTW91c2VVcCk7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF5LXZpZXctY29tcG9uZW50XCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJhbGwtZGF5LWV2ZW50c1wiIFtzdHlsZS5oZWlnaHQucHhdPVwiYWxsRGF5SGVpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIHt7J2FsbERheUV2ZW50cycgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGxpYi1jYWxlbmRhci1ldmVudCAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgYWxsRGF5RXZlbnRzXCIgW2V2ZW50XT1cImV2ZW50XCI+PC9saWItY2FsZW5kYXItZXZlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJyZXNpemUtZGl2aWRlclwiIChtb3VzZWRvd24pPVwib25SZXNpemVNb3VzZURvd24oJGV2ZW50KVwiPjwvZGl2PlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkdXJhdGlvbi1ldmVudHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItYmxvY2tzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG91ci1ibG9ja1wiICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJCbG9ja3NcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBob3VyIH19OjAwPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHMtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYmxvY2tzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYmxvY2tcIiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3VyQmxvY2tzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWJsb2NrLW1pZGRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHMtY29udGFpbmVyXCIgW3N0eWxlLmdyaWRUZW1wbGF0ZUNvbHVtbnNdPVwiJ3JlcGVhdCgnICsgZXZlbnRDb2xzLmxlbmd0aCArICcsIDFmciknXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWNvbHVtblwiICpuZ0Zvcj1cImxldCBjb2wgb2YgZXZlbnRDb2xzXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1kdXJhdGlvbi1ldmVudCAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgY29sLmV2ZW50c1wiIFtldmVudF09XCJldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZV09XCJkYXRlXCI+PC9saWItZHVyYXRpb24tZXZlbnQ+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { isDarkColor } from '../../utils/colors';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class DurationEventComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.isDarkColor = false;
|
|
8
|
+
this.topPosition = 0;
|
|
9
|
+
this.height = 0;
|
|
10
|
+
this.isEventStartInThisDay = false;
|
|
11
|
+
this.isEventEndInThisDay = false;
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.isDarkColor = isDarkColor(this.event.color || '#000000');
|
|
15
|
+
this.isEventStartInThisDay = this.getIsEventStartInThisDay();
|
|
16
|
+
this.isEventEndInThisDay = this.getIsEventEndInThisDay();
|
|
17
|
+
this.topPosition = this.getTopPosition();
|
|
18
|
+
this.height = this.getEventHeight();
|
|
19
|
+
}
|
|
20
|
+
getIsEventStartInThisDay() {
|
|
21
|
+
return this.event.start.getDate() === this.date.getDate() && this.event.start.getMonth() === this.date.getMonth() && this.event.start.getFullYear() === this.date.getFullYear();
|
|
22
|
+
}
|
|
23
|
+
getIsEventEndInThisDay() {
|
|
24
|
+
return this.event.end.getDate() === this.date.getDate() && this.event.end.getMonth() === this.date.getMonth() && this.event.end.getFullYear() === this.date.getFullYear();
|
|
25
|
+
}
|
|
26
|
+
getTopPosition() {
|
|
27
|
+
if (!this.isEventStartInThisDay)
|
|
28
|
+
return 0;
|
|
29
|
+
return this.event.start.getHours() * 60 + this.event.start.getMinutes();
|
|
30
|
+
}
|
|
31
|
+
getEventHeight() {
|
|
32
|
+
const max_minutes_in_day = 24 * 60;
|
|
33
|
+
if (!this.isEventStartInThisDay && !this.isEventEndInThisDay)
|
|
34
|
+
return max_minutes_in_day;
|
|
35
|
+
const result = (this.event.end.getTime() - this.event.start.getTime()) / (1000 * 60);
|
|
36
|
+
if (result < 20)
|
|
37
|
+
return 20;
|
|
38
|
+
if (!this.isEventStartInThisDay)
|
|
39
|
+
return (this.event.end.getTime() - new Date(this.date.getFullYear(), this.date.getMonth(), this.date.getDate(), 0, 0, 0).getTime()) / (1000 * 60);
|
|
40
|
+
const startPosition = this.getTopPosition();
|
|
41
|
+
if (startPosition + result > max_minutes_in_day)
|
|
42
|
+
return max_minutes_in_day - startPosition;
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
DurationEventComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DurationEventComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
DurationEventComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DurationEventComponent, selector: "lib-duration-event", inputs: { event: "event", date: "date" }, ngImport: i0, template: "<div class=\"duration-event-component\" style=\"--color: {{ event.color }};\" [style.top.px]=\"topPosition\"\n [style.height.px]=\"height\" [ngClass]=\"{'dark-color': isDarkColor}\" [title]=\"event.title\">\n <div class=\"event-title\">{{ event.title }}</div>\n</div>", styles: [".duration-event-component{position:absolute;left:0;z-index:1;width:100%;background-color:var(--color, rgba(0, 0, 0, .05));border-radius:4px;padding:2px 8px;cursor:pointer;-webkit-user-select:none;user-select:none;color:#212121}.duration-event-component.dark-color{color:#fafafa}.event-title{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DurationEventComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'lib-duration-event', template: "<div class=\"duration-event-component\" style=\"--color: {{ event.color }};\" [style.top.px]=\"topPosition\"\n [style.height.px]=\"height\" [ngClass]=\"{'dark-color': isDarkColor}\" [title]=\"event.title\">\n <div class=\"event-title\">{{ event.title }}</div>\n</div>", styles: [".duration-event-component{position:absolute;left:0;z-index:1;width:100%;background-color:var(--color, rgba(0, 0, 0, .05));border-radius:4px;padding:2px 8px;cursor:pointer;-webkit-user-select:none;user-select:none;color:#212121}.duration-event-component.dark-color{color:#fafafa}.event-title{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
51
|
+
}], ctorParameters: function () { return []; }, propDecorators: { event: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], date: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}] } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24tZXZlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvZHVyYXRpb24tZXZlbnQvZHVyYXRpb24tZXZlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvZHVyYXRpb24tZXZlbnQvZHVyYXRpb24tZXZlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFPakQsTUFBTSxPQUFPLHNCQUFzQjtJQWFqQztRQVJBLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFFbkIsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQUVyQixDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsTCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0ssQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxrQkFBa0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQztRQUV4RixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFdEYsSUFBSSxNQUFNLEdBQUcsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCO1lBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVwTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFNUMsSUFBSSxhQUFhLEdBQUcsTUFBTSxHQUFHLGtCQUFrQjtZQUFFLE9BQU8sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO1FBRTNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O21IQXJEVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvR0NUbkMsbVJBR007MkZETU8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjswRUFNckIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFdmVudCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGlzRGFya0NvbG9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWR1cmF0aW9uLWV2ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R1cmF0aW9uLWV2ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHVyYXRpb24tZXZlbnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEdXJhdGlvbkV2ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBldmVudCE6IENhbGVuZGFyRXZlbnQ7XG4gIEBJbnB1dCgpIGRhdGUhOiBEYXRlO1xuXG4gIGlzRGFya0NvbG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdG9wUG9zaXRpb246IG51bWJlciA9IDA7XG4gIGhlaWdodDogbnVtYmVyID0gMDtcblxuICBpc0V2ZW50U3RhcnRJblRoaXNEYXk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFdmVudEVuZEluVGhpc0RheTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0RhcmtDb2xvciA9IGlzRGFya0NvbG9yKHRoaXMuZXZlbnQuY29sb3IgfHwgJyMwMDAwMDAnKTtcbiAgICB0aGlzLmlzRXZlbnRTdGFydEluVGhpc0RheSA9IHRoaXMuZ2V0SXNFdmVudFN0YXJ0SW5UaGlzRGF5KCk7XG4gICAgdGhpcy5pc0V2ZW50RW5kSW5UaGlzRGF5ID0gdGhpcy5nZXRJc0V2ZW50RW5kSW5UaGlzRGF5KCk7XG4gICAgdGhpcy50b3BQb3NpdGlvbiA9IHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMuZ2V0RXZlbnRIZWlnaHQoKTtcbiAgfVxuXG4gIGdldElzRXZlbnRTdGFydEluVGhpc0RheSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudC5zdGFydC5nZXREYXRlKCkgPT09IHRoaXMuZGF0ZS5nZXREYXRlKCkgJiYgdGhpcy5ldmVudC5zdGFydC5nZXRNb250aCgpID09PSB0aGlzLmRhdGUuZ2V0TW9udGgoKSAmJiB0aGlzLmV2ZW50LnN0YXJ0LmdldEZ1bGxZZWFyKCkgPT09IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgZ2V0SXNFdmVudEVuZEluVGhpc0RheSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudC5lbmQhLmdldERhdGUoKSA9PT0gdGhpcy5kYXRlLmdldERhdGUoKSAmJiB0aGlzLmV2ZW50LmVuZCEuZ2V0TW9udGgoKSA9PT0gdGhpcy5kYXRlLmdldE1vbnRoKCkgJiYgdGhpcy5ldmVudC5lbmQhLmdldEZ1bGxZZWFyKCkgPT09IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuaXNFdmVudFN0YXJ0SW5UaGlzRGF5KSByZXR1cm4gMDtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50LnN0YXJ0LmdldEhvdXJzKCkgKiA2MCArIHRoaXMuZXZlbnQuc3RhcnQuZ2V0TWludXRlcygpO1xuICB9XG5cbiAgZ2V0RXZlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXhfbWludXRlc19pbl9kYXkgPSAyNCAqIDYwO1xuXG4gICAgaWYgKCF0aGlzLmlzRXZlbnRTdGFydEluVGhpc0RheSAmJiAhdGhpcy5pc0V2ZW50RW5kSW5UaGlzRGF5KSByZXR1cm4gbWF4X21pbnV0ZXNfaW5fZGF5O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gKHRoaXMuZXZlbnQuZW5kIS5nZXRUaW1lKCkgLSB0aGlzLmV2ZW50LnN0YXJ0LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwKTtcblxuICAgIGlmIChyZXN1bHQgPCAyMCkgcmV0dXJuIDIwO1xuXG4gICAgaWYgKCF0aGlzLmlzRXZlbnRTdGFydEluVGhpc0RheSkgcmV0dXJuICh0aGlzLmV2ZW50LmVuZCEuZ2V0VGltZSgpIC0gbmV3IERhdGUodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCksIHRoaXMuZGF0ZS5nZXRNb250aCgpLCB0aGlzLmRhdGUuZ2V0RGF0ZSgpLCAwLCAwLCAwKS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCk7XG5cbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuXG4gICAgaWYgKHN0YXJ0UG9zaXRpb24gKyByZXN1bHQgPiBtYXhfbWludXRlc19pbl9kYXkpIHJldHVybiBtYXhfbWludXRlc19pbl9kYXkgLSBzdGFydFBvc2l0aW9uO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZHVyYXRpb24tZXZlbnQtY29tcG9uZW50XCIgc3R5bGU9XCItLWNvbG9yOiB7eyBldmVudC5jb2xvciB9fTtcIiBbc3R5bGUudG9wLnB4XT1cInRvcFBvc2l0aW9uXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiIFtuZ0NsYXNzXT1cInsnZGFyay1jb2xvcic6IGlzRGFya0NvbG9yfVwiIFt0aXRsZV09XCJldmVudC50aXRsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJldmVudC10aXRsZVwiPnt7IGV2ZW50LnRpdGxlIH19PC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { MONTHS } from '../../translations';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../../pipes/translate-month.pipe";
|
|
6
|
+
export class MonthSelectorComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.monthSelected = new EventEmitter();
|
|
9
|
+
this.mode = 'decade';
|
|
10
|
+
this.currentYear = new Date().getFullYear();
|
|
11
|
+
this.currentMonth = new Date().getMonth() + 1;
|
|
12
|
+
this.selectedMonth = { year: new Date().getFullYear(), month: new Date().getMonth() + 1 };
|
|
13
|
+
this.selectedYear = new Date().getFullYear();
|
|
14
|
+
this.currentDecadeStart = Math.floor(this.selectedYear / 10) * 10;
|
|
15
|
+
this.years = [];
|
|
16
|
+
this.months = Object.keys(MONTHS).map(key => Number(key));
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
this.selectedYear = this.selectedMonth.year;
|
|
21
|
+
this.selectDecadeByYear(this.selectedYear);
|
|
22
|
+
this.setYears();
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
toggleMode(event) {
|
|
26
|
+
event.stopPropagation();
|
|
27
|
+
this.mode = this.mode === 'year' ? 'decade' : 'year';
|
|
28
|
+
}
|
|
29
|
+
setYears() {
|
|
30
|
+
this.years = [];
|
|
31
|
+
for (let i = this.currentDecadeStart; i < this.currentDecadeStart + 10; i++) {
|
|
32
|
+
this.years.push(i);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
;
|
|
36
|
+
next(event) {
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
if (this.mode === 'year') {
|
|
39
|
+
this.selectedYear++;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.currentDecadeStart += 10;
|
|
43
|
+
this.setYears();
|
|
44
|
+
this.selectedYear = this.currentDecadeStart;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
previous(event) {
|
|
48
|
+
event.stopPropagation();
|
|
49
|
+
if (this.mode === 'year') {
|
|
50
|
+
this.selectedYear--;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.currentDecadeStart -= 10;
|
|
54
|
+
this.setYears();
|
|
55
|
+
this.selectedYear = this.currentDecadeStart;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
selectYear(event, year) {
|
|
59
|
+
event.stopPropagation();
|
|
60
|
+
this.selectedYear = year;
|
|
61
|
+
this.mode = 'year';
|
|
62
|
+
}
|
|
63
|
+
selectDecadeByYear(year) {
|
|
64
|
+
this.currentDecadeStart = Math.floor(year / 10) * 10;
|
|
65
|
+
this.setYears();
|
|
66
|
+
this.mode = 'decade';
|
|
67
|
+
}
|
|
68
|
+
selectMonth(month) {
|
|
69
|
+
this.monthSelected.emit({ year: this.selectedYear, month });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
MonthSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MonthSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
MonthSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MonthSelectorComponent, selector: "lib-month-selector", inputs: { selectedMonth: "selectedMonth" }, outputs: { monthSelected: "monthSelected" }, ngImport: i0, template: "<div class=\"month-selector-component\">\n <div class=\"header\">\n <button class=\"btn-range\" *ngIf=\"mode === 'decade'\" (click)=\"toggleMode($event)\">\n <span>{{currentDecadeStart}} - {{currentDecadeStart + 9}}</span>\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"\n fill=\"currentColor\">\n <path d=\"M480-360 280-560h400L480-360Z\" />\n </svg>\n </button>\n\n <button class=\"btn-range\" *ngIf=\"mode === 'year'\" (click)=\"toggleMode($event)\">\n <span>{{selectedYear}}</span>\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"transform: rotate(180deg);\" height=\"24px\"\n viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M480-360 280-560h400L480-360Z\" />\n </svg>\n </button>\n\n <div class=\"nav-controls\">\n <button class=\"btn-prev\" (click)=\"previous($event)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"\n fill=\"currentColor\">\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\n </svg>\n </button>\n\n <button class=\"btn-next\" (click)=\"next($event)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"\n fill=\"currentColor\">\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div class=\"years-grid\" *ngIf=\"mode === 'decade'\">\n <button class=\"btn-year\" *ngFor=\"let year of years\"\n [ngClass]=\"{selected: year === selectedYear, current: year === currentYear }\"\n (click)=\"selectYear($event, year)\">\n {{ year }}\n </button>\n </div>\n\n <div class=\"months-grid\" *ngIf=\"mode === 'year'\">\n <button class=\"btn-month\" *ngFor=\"let month of months\"\n [ngClass]=\"{selected: month === selectedMonth.month && selectedYear === selectedMonth.year, current: currentYear === selectedYear && month === currentMonth}\"\n (click)=\"selectMonth(month)\">\n {{ month | translateMonth | slice:0:3 }}\n </button>\n </div>\n</div>", styles: [".month-selector-component{display:flex;flex-direction:column;width:280px;-webkit-user-select:none;user-select:none}.header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px}.btn-range{display:flex;align-items:center;height:32px;padding:0 4px 0 12px;background:none;border:none;border-radius:50px;cursor:pointer;font-weight:600}.btn-range:hover{background-color:#0000000a}.btn-range span{white-space:nowrap}.nav-controls{display:flex;align-items:center}.btn-prev,.btn-next{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;border-radius:50%;cursor:pointer}.btn-prev:hover,.btn-next:hover{background-color:#0000000a}.years-grid,.months-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 16px 16px}.btn-month,.btn-year{display:flex;align-items:center;justify-content:center;padding:6px 12px;border:none;background:none;border-radius:50px;font-size:14px;cursor:pointer}.btn-month:hover,.btn-year:hover{background-color:#0000000a}.btn-month.selected,.btn-year.selected{border:1px solid rgba(0,0,0,.12)}.btn-month.current,.btn-year.current{background-color:#0000001f}\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: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i2.TranslateMonthPipe, name: "translateMonth" }] });
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MonthSelectorComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ selector: 'lib-month-selector', template: "<div class=\"month-selector-component\">\n <div class=\"header\">\n <button class=\"btn-range\" *ngIf=\"mode === 'decade'\" (click)=\"toggleMode($event)\">\n <span>{{currentDecadeStart}} - {{currentDecadeStart + 9}}</span>\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"\n fill=\"currentColor\">\n <path d=\"M480-360 280-560h400L480-360Z\" />\n </svg>\n </button>\n\n <button class=\"btn-range\" *ngIf=\"mode === 'year'\" (click)=\"toggleMode($event)\">\n <span>{{selectedYear}}</span>\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"transform: rotate(180deg);\" height=\"24px\"\n viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M480-360 280-560h400L480-360Z\" />\n </svg>\n </button>\n\n <div class=\"nav-controls\">\n <button class=\"btn-prev\" (click)=\"previous($event)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"\n fill=\"currentColor\">\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\n </svg>\n </button>\n\n <button class=\"btn-next\" (click)=\"next($event)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"\n fill=\"currentColor\">\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div class=\"years-grid\" *ngIf=\"mode === 'decade'\">\n <button class=\"btn-year\" *ngFor=\"let year of years\"\n [ngClass]=\"{selected: year === selectedYear, current: year === currentYear }\"\n (click)=\"selectYear($event, year)\">\n {{ year }}\n </button>\n </div>\n\n <div class=\"months-grid\" *ngIf=\"mode === 'year'\">\n <button class=\"btn-month\" *ngFor=\"let month of months\"\n [ngClass]=\"{selected: month === selectedMonth.month && selectedYear === selectedMonth.year, current: currentYear === selectedYear && month === currentMonth}\"\n (click)=\"selectMonth(month)\">\n {{ month | translateMonth | slice:0:3 }}\n </button>\n </div>\n</div>", styles: [".month-selector-component{display:flex;flex-direction:column;width:280px;-webkit-user-select:none;user-select:none}.header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px}.btn-range{display:flex;align-items:center;height:32px;padding:0 4px 0 12px;background:none;border:none;border-radius:50px;cursor:pointer;font-weight:600}.btn-range:hover{background-color:#0000000a}.btn-range span{white-space:nowrap}.nav-controls{display:flex;align-items:center}.btn-prev,.btn-next{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;border-radius:50%;cursor:pointer}.btn-prev:hover,.btn-next:hover{background-color:#0000000a}.years-grid,.months-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 16px 16px}.btn-month,.btn-year{display:flex;align-items:center;justify-content:center;padding:6px 12px;border:none;background:none;border-radius:50px;font-size:14px;cursor:pointer}.btn-month:hover,.btn-year:hover{background-color:#0000000a}.btn-month.selected,.btn-year.selected{border:1px solid rgba(0,0,0,.12)}.btn-month.current,.btn-year.current{background-color:#0000001f}\n"] }]
|
|
77
|
+
}], ctorParameters: function () { return []; }, propDecorators: { monthSelected: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}], selectedMonth: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvbW9udGgtc2VsZWN0b3IvbW9udGgtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvbW9udGgtc2VsZWN0b3IvbW9udGgtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFPNUMsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQztRQWJVLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFFOUUsU0FBSSxHQUFzQixRQUFRLENBQUM7UUFDbkMsZ0JBQVcsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLGlCQUFZLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEMsa0JBQWEsR0FBb0MsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUUvSCxpQkFBWSxHQUFXLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsdUJBQWtCLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FB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QkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7MEVBTXBCLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0UsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1PTlRIUyB9IGZyb20gJy4uLy4uL3RyYW5zbGF0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1tb250aC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb250aC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vbnRoLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTW9udGhTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIG1vbnRoU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyIH0+KCk7XG5cbiAgbW9kZTogJ3llYXInIHwgJ2RlY2FkZScgPSAnZGVjYWRlJztcbiAgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgY3VycmVudE1vbnRoOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxO1xuICBASW5wdXQoKSBzZWxlY3RlZE1vbnRoOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciB9ID0geyB5ZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIG1vbnRoOiBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxIH07XG5cbiAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gIGN1cnJlbnREZWNhZGVTdGFydDogbnVtYmVyID0gTWF0aC5mbG9vcih0aGlzLnNlbGVjdGVkWWVhciAvIDEwKSAqIDEwO1xuXG4gIHllYXJzOiBudW1iZXJbXSA9IFtdO1xuICBtb250aHMgPSBPYmplY3Qua2V5cyhNT05USFMpLm1hcChrZXkgPT4gTnVtYmVyKGtleSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMuc2VsZWN0ZWRNb250aC55ZWFyO1xuXG4gICAgICB0aGlzLnNlbGVjdERlY2FkZUJ5WWVhcih0aGlzLnNlbGVjdGVkWWVhcik7XG4gICAgICB0aGlzLnNldFllYXJzKCk7XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVNb2RlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5tb2RlID0gdGhpcy5tb2RlID09PSAneWVhcicgPyAnZGVjYWRlJyA6ICd5ZWFyJztcbiAgfVxuXG4gIHNldFllYXJzKCkge1xuICAgIHRoaXMueWVhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5jdXJyZW50RGVjYWRlU3RhcnQ7IGkgPCB0aGlzLmN1cnJlbnREZWNhZGVTdGFydCArIDEwOyBpKyspIHtcbiAgICAgIHRoaXMueWVhcnMucHVzaChpKTtcbiAgICB9XG4gIH07XG5cbiAgbmV4dChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhcisrO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnREZWNhZGVTdGFydCArPSAxMDtcbiAgICAgIHRoaXMuc2V0WWVhcnMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5jdXJyZW50RGVjYWRlU3RhcnQ7XG4gICAgfVxuICB9XG5cbiAgcHJldmlvdXMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLm1vZGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXItLTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGVjYWRlU3RhcnQgLT0gMTA7XG4gICAgICB0aGlzLnNldFllYXJzKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMuY3VycmVudERlY2FkZVN0YXJ0O1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFllYXIoZXZlbnQ6IE1vdXNlRXZlbnQsIHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFllYXIgPSB5ZWFyO1xuICAgIHRoaXMubW9kZSA9ICd5ZWFyJztcbiAgfVxuXG4gIHNlbGVjdERlY2FkZUJ5WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREZWNhZGVTdGFydCA9IE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICAgIHRoaXMuc2V0WWVhcnMoKTtcbiAgICB0aGlzLm1vZGUgPSAnZGVjYWRlJztcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1vbnRoU2VsZWN0ZWQuZW1pdCh7IHllYXI6IHRoaXMuc2VsZWN0ZWRZZWFyLCBtb250aCB9KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwibW9udGgtc2VsZWN0b3ItY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXJhbmdlXCIgKm5nSWY9XCJtb2RlID09PSAnZGVjYWRlJ1wiIChjbGljayk9XCJ0b2dnbGVNb2RlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7Y3VycmVudERlY2FkZVN0YXJ0fX0gLSB7e2N1cnJlbnREZWNhZGVTdGFydCArIDl9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNDgwLTM2MCAyODAtNTYwaDQwMEw0ODAtMzYwWlwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1yYW5nZVwiICpuZ0lmPVwibW9kZSA9PT0gJ3llYXInXCIgKGNsaWNrKT1cInRvZ2dsZU1vZGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHNwYW4+e3tzZWxlY3RlZFllYXJ9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1wiIGhlaWdodD1cIjI0cHhcIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQ4MC0zNjAgMjgwLTU2MGg0MDBMNDgwLTM2MFpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tcHJldlwiIChjbGljayk9XCJwcmV2aW91cygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01NjAtMjQwIDMyMC00ODBsMjQwLTI0MCA1NiA1Ni0xODQgMTg0IDE4NCAxODQtNTYgNTZaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLW5leHRcIiAoY2xpY2spPVwibmV4dCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MDQtNDgwIDMyMC02NjRsNTYtNTYgMjQwIDI0MC0yNDAgMjQwLTU2LTU2IDE4NC0xODRaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ5ZWFycy1ncmlkXCIgKm5nSWY9XCJtb2RlID09PSAnZGVjYWRlJ1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXllYXJcIiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHllYXIgPT09IHNlbGVjdGVkWWVhciwgY3VycmVudDogeWVhciA9PT0gY3VycmVudFllYXIgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcigkZXZlbnQsIHllYXIpXCI+XG4gICAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vbnRocy1ncmlkXCIgKm5nSWY9XCJtb2RlID09PSAneWVhcidcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1tb250aFwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHNcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie3NlbGVjdGVkOiBtb250aCA9PT0gc2VsZWN0ZWRNb250aC5tb250aCAmJiBzZWxlY3RlZFllYXIgPT09IHNlbGVjdGVkTW9udGgueWVhciwgY3VycmVudDogY3VycmVudFllYXIgPT09IHNlbGVjdGVkWWVhciAmJiBtb250aCA9PT0gY3VycmVudE1vbnRofVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgobW9udGgpXCI+XG4gICAgICAgICAgICB7eyBtb250aCB8IHRyYW5zbGF0ZU1vbnRoIHwgc2xpY2U6MDozIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -22,10 +22,10 @@ export class MoreEventsModalComponent {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
MoreEventsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MoreEventsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
MoreEventsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MoreEventsModalComponent, selector: "lib-more-events-modal", inputs: { events: "events", date: "date" }, outputs: { close: "close", eventClick: "eventClick" }, ngImport: i0, template: "<div class=\"more-events-modal-component\">\n <div class=\"backdrop\" (click)=\"onClose()\"></div>\n\n <div class=\"modal\">\n <div class=\"header\">\n <div class=\"title\">{{'moreEvents' | translate}}</div>\n <div class=\"subtitle\">{{date.toLocaleDateString()}}</div>\n\n <button class=\"btn-close\" (click)=\"onClose()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-x\" fill=\"yellow\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"events-list\">\n <div class=\"event-item\" *ngFor=\"let event of events\" style=\"--color: {{event.color}};\"\n [ngClass]=\"{'is-dark':isDarkColor(event.color)}\" (click)=\"onEventClick(event)\">\n <div class=\"event-title\">{{ event.title }}</div>\n </div>\n </div>\n </div>\n</div>", styles: [".more-events-modal-component{position:absolute;top:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;width:
|
|
25
|
+
MoreEventsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MoreEventsModalComponent, selector: "lib-more-events-modal", inputs: { events: "events", date: "date" }, outputs: { close: "close", eventClick: "eventClick" }, ngImport: i0, template: "<div class=\"more-events-modal-component\">\n <div class=\"backdrop\" (click)=\"onClose()\"></div>\n\n <div class=\"modal\">\n <div class=\"header\">\n <div class=\"title\">{{'moreEvents' | translate}}</div>\n <div class=\"subtitle\">{{date.toLocaleDateString()}}</div>\n\n <button class=\"btn-close\" (click)=\"onClose()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-x\" fill=\"yellow\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"events-list\">\n <div class=\"event-item\" *ngFor=\"let event of events\" style=\"--color: {{event.color}};\"\n [ngClass]=\"{'is-dark':isDarkColor(event.color)}\" (click)=\"onEventClick(event)\">\n <div class=\"event-title\">{{ event.title }}</div>\n </div>\n </div>\n </div>\n</div>", styles: [".more-events-modal-component{position:absolute;top:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-shadow:0 2px 8px #00000026}.more-events-modal-component .backdrop{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-color:#00000080;cursor:pointer}.modal{z-index:2;display:flex;flex-direction:column;max-width:400px;width:100%;max-height:80%;margin:24px;background-color:#fff;border-radius:8px}.header{position:relative;display:flex;flex-direction:column;padding:16px 64px 16px 16px}.title{font-size:18px;font-weight:700}.subtitle{font-size:13px;color:#666}.btn-close{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;border-radius:50%;cursor:pointer}.btn-close:hover{background-color:#f0f0f0}.events-list{flex:1 1 auto;display:flex;flex-direction:column;gap:4px;padding:0 16px 16px;overflow-y:auto}.events-list .event-item{display:flex;padding:8px;background-color:var(--color, #e2e2e2);border-radius:4px;color:#212121;cursor:pointer;-webkit-user-select:none;user-select:none}.events-list .event-item.is-dark{color:#fafafa}\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: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MoreEventsModalComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'lib-more-events-modal', template: "<div class=\"more-events-modal-component\">\n <div class=\"backdrop\" (click)=\"onClose()\"></div>\n\n <div class=\"modal\">\n <div class=\"header\">\n <div class=\"title\">{{'moreEvents' | translate}}</div>\n <div class=\"subtitle\">{{date.toLocaleDateString()}}</div>\n\n <button class=\"btn-close\" (click)=\"onClose()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-x\" fill=\"yellow\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"events-list\">\n <div class=\"event-item\" *ngFor=\"let event of events\" style=\"--color: {{event.color}};\"\n [ngClass]=\"{'is-dark':isDarkColor(event.color)}\" (click)=\"onEventClick(event)\">\n <div class=\"event-title\">{{ event.title }}</div>\n </div>\n </div>\n </div>\n</div>", styles: [".more-events-modal-component{position:absolute;top:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;width:
|
|
28
|
+
args: [{ selector: 'lib-more-events-modal', template: "<div class=\"more-events-modal-component\">\n <div class=\"backdrop\" (click)=\"onClose()\"></div>\n\n <div class=\"modal\">\n <div class=\"header\">\n <div class=\"title\">{{'moreEvents' | translate}}</div>\n <div class=\"subtitle\">{{date.toLocaleDateString()}}</div>\n\n <button class=\"btn-close\" (click)=\"onClose()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-x\" fill=\"yellow\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"events-list\">\n <div class=\"event-item\" *ngFor=\"let event of events\" style=\"--color: {{event.color}};\"\n [ngClass]=\"{'is-dark':isDarkColor(event.color)}\" (click)=\"onEventClick(event)\">\n <div class=\"event-title\">{{ event.title }}</div>\n </div>\n </div>\n </div>\n</div>", styles: [".more-events-modal-component{position:absolute;top:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-shadow:0 2px 8px #00000026}.more-events-modal-component .backdrop{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-color:#00000080;cursor:pointer}.modal{z-index:2;display:flex;flex-direction:column;max-width:400px;width:100%;max-height:80%;margin:24px;background-color:#fff;border-radius:8px}.header{position:relative;display:flex;flex-direction:column;padding:16px 64px 16px 16px}.title{font-size:18px;font-weight:700}.subtitle{font-size:13px;color:#666}.btn-close{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;border-radius:50%;cursor:pointer}.btn-close:hover{background-color:#f0f0f0}.events-list{flex:1 1 auto;display:flex;flex-direction:column;gap:4px;padding:0 16px 16px;overflow-y:auto}.events-list .event-item{display:flex;padding:8px;background-color:var(--color, #e2e2e2);border-radius:4px;color:#212121;cursor:pointer;-webkit-user-select:none;user-select:none}.events-list .event-item.is-dark{color:#fafafa}\n"] }]
|
|
29
29
|
}], ctorParameters: function () { return []; }, propDecorators: { events: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}], date: [{
|