@bimetal/calendar-angular-components 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +129 -0
- package/README.md +56 -0
- package/dist/binding/config.d.ts +6 -0
- package/dist/binding/config.d.ts.map +1 -0
- package/dist/binding/config.js +6 -0
- package/dist/binding/config.js.map +1 -0
- package/dist/binding/controller.d.ts +22 -0
- package/dist/binding/controller.d.ts.map +1 -0
- package/dist/binding/controller.js +17 -0
- package/dist/binding/controller.js.map +1 -0
- package/dist/binding/index.d.ts +24 -0
- package/dist/binding/index.d.ts.map +1 -0
- package/dist/binding/index.js +26 -0
- package/dist/binding/index.js.map +1 -0
- package/dist/binding/services/event-render.service.d.ts +40 -0
- package/dist/binding/services/event-render.service.d.ts.map +1 -0
- package/dist/binding/services/event-render.service.js +58 -0
- package/dist/binding/services/event-render.service.js.map +1 -0
- package/dist/binding/types.d.ts +128 -0
- package/dist/binding/types.d.ts.map +1 -0
- package/dist/binding/types.js +12 -0
- package/dist/binding/types.js.map +1 -0
- package/dist/binding/utils/date-strings.d.ts +16 -0
- package/dist/binding/utils/date-strings.d.ts.map +1 -0
- package/dist/binding/utils/date-strings.js +30 -0
- package/dist/binding/utils/date-strings.js.map +1 -0
- package/dist/binding/utils/gridUtils.d.ts +6 -0
- package/dist/binding/utils/gridUtils.d.ts.map +1 -0
- package/dist/binding/utils/gridUtils.js +13 -0
- package/dist/binding/utils/gridUtils.js.map +1 -0
- package/dist/binding/view-configs.d.ts +6 -0
- package/dist/binding/view-configs.d.ts.map +1 -0
- package/dist/binding/view-configs.js +6 -0
- package/dist/binding/view-configs.js.map +1 -0
- package/dist/components/Calendar.d.ts +110 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +554 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/CalendarHeader.d.ts +17 -0
- package/dist/components/CalendarHeader.d.ts.map +1 -0
- package/dist/components/CalendarHeader.js +105 -0
- package/dist/components/CalendarHeader.js.map +1 -0
- package/dist/components/CategoryFilter.d.ts +11 -0
- package/dist/components/CategoryFilter.d.ts.map +1 -0
- package/dist/components/CategoryFilter.js +66 -0
- package/dist/components/CategoryFilter.js.map +1 -0
- package/dist/components/EventBar.d.ts +56 -0
- package/dist/components/EventBar.d.ts.map +1 -0
- package/dist/components/EventBar.js +328 -0
- package/dist/components/EventBar.js.map +1 -0
- package/dist/components/EventDialog.d.ts +52 -0
- package/dist/components/EventDialog.d.ts.map +1 -0
- package/dist/components/EventDialog.js +557 -0
- package/dist/components/EventDialog.js.map +1 -0
- package/dist/components/EventHistory.d.ts +17 -0
- package/dist/components/EventHistory.d.ts.map +1 -0
- package/dist/components/EventHistory.js +166 -0
- package/dist/components/EventHistory.js.map +1 -0
- package/dist/components/ResourceFilter.d.ts +12 -0
- package/dist/components/ResourceFilter.d.ts.map +1 -0
- package/dist/components/ResourceFilter.js +67 -0
- package/dist/components/ResourceFilter.js.map +1 -0
- package/dist/components/UndoToast.d.ts +20 -0
- package/dist/components/UndoToast.d.ts.map +1 -0
- package/dist/components/UndoToast.js +90 -0
- package/dist/components/UndoToast.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/index.css +1 -0
- package/dist/views/agenda/AgendaView.d.ts +54 -0
- package/dist/views/agenda/AgendaView.d.ts.map +1 -0
- package/dist/views/agenda/AgendaView.js +309 -0
- package/dist/views/agenda/AgendaView.js.map +1 -0
- package/dist/views/day/DayView.d.ts +85 -0
- package/dist/views/day/DayView.d.ts.map +1 -0
- package/dist/views/day/DayView.js +422 -0
- package/dist/views/day/DayView.js.map +1 -0
- package/dist/views/month/MonthView.d.ts +51 -0
- package/dist/views/month/MonthView.d.ts.map +1 -0
- package/dist/views/month/MonthView.js +184 -0
- package/dist/views/month/MonthView.js.map +1 -0
- package/dist/views/month/WeekRow.d.ts +89 -0
- package/dist/views/month/WeekRow.d.ts.map +1 -0
- package/dist/views/month/WeekRow.js +548 -0
- package/dist/views/month/WeekRow.js.map +1 -0
- package/dist/views/resource/ResourceView.d.ts +85 -0
- package/dist/views/resource/ResourceView.d.ts.map +1 -0
- package/dist/views/resource/ResourceView.js +388 -0
- package/dist/views/resource/ResourceView.js.map +1 -0
- package/dist/views/timeline/TimelineView.d.ts +69 -0
- package/dist/views/timeline/TimelineView.d.ts.map +1 -0
- package/dist/views/timeline/TimelineView.js +314 -0
- package/dist/views/timeline/TimelineView.js.map +1 -0
- package/dist/views/week/AllDayRow.d.ts +38 -0
- package/dist/views/week/AllDayRow.d.ts.map +1 -0
- package/dist/views/week/AllDayRow.js +149 -0
- package/dist/views/week/AllDayRow.js.map +1 -0
- package/dist/views/week/TimeEvent.d.ts +77 -0
- package/dist/views/week/TimeEvent.d.ts.map +1 -0
- package/dist/views/week/TimeEvent.js +279 -0
- package/dist/views/week/TimeEvent.js.map +1 -0
- package/dist/views/week/WeekView.d.ts +79 -0
- package/dist/views/week/WeekView.d.ts.map +1 -0
- package/dist/views/week/WeekView.js +370 -0
- package/dist/views/week/WeekView.js.map +1 -0
- package/dist/views/year/YearView.d.ts +37 -0
- package/dist/views/year/YearView.d.ts.map +1 -0
- package/dist/views/year/YearView.js +162 -0
- package/dist/views/year/YearView.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
function CalendarHeaderComponent_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
7
|
+
i0.ɵɵelementStart(0, "button", 8);
|
|
8
|
+
i0.ɵɵlistener("click", function CalendarHeaderComponent_button_5_Template_button_click_0_listener() { const vc_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.viewChange.emit(vc_r2.type)); });
|
|
9
|
+
i0.ɵɵtext(1);
|
|
10
|
+
i0.ɵɵelementEnd();
|
|
11
|
+
} if (rf & 2) {
|
|
12
|
+
const vc_r2 = ctx.$implicit;
|
|
13
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
14
|
+
i0.ɵɵclassMap("view-btn" + (ctx_r2.currentView === vc_r2.type ? " view-btn--active" : ""));
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵtextInterpolate1(" ", vc_r2.label, " ");
|
|
17
|
+
} }
|
|
18
|
+
export class CalendarHeaderComponent {
|
|
19
|
+
title = '';
|
|
20
|
+
currentView = 'month';
|
|
21
|
+
viewConfigs = [];
|
|
22
|
+
locale;
|
|
23
|
+
prev = new EventEmitter();
|
|
24
|
+
next = new EventEmitter();
|
|
25
|
+
today = new EventEmitter();
|
|
26
|
+
viewChange = new EventEmitter();
|
|
27
|
+
static ɵfac = function CalendarHeaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CalendarHeaderComponent)(); };
|
|
28
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CalendarHeaderComponent, selectors: [["cal-header"]], hostAttrs: [2, "display", "contents"], inputs: { title: "title", currentView: "currentView", viewConfigs: "viewConfigs", locale: "locale" }, outputs: { prev: "prev", next: "next", today: "today", viewChange: "viewChange" }, decls: 13, vars: 5, consts: [[1, "calendar-header"], [1, "month-title"], [1, "header-controls"], [1, "view-switcher"], [3, "class", "click", 4, "ngFor", "ngForOf"], [1, "nav-controls"], [1, "nav-btn", 3, "click"], [1, "today-btn", 3, "click"], [3, "click"]], template: function CalendarHeaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "h1", 1);
|
|
30
|
+
i0.ɵɵtext(2);
|
|
31
|
+
i0.ɵɵelementEnd();
|
|
32
|
+
i0.ɵɵelementStart(3, "div", 2)(4, "div", 3);
|
|
33
|
+
i0.ɵɵtemplate(5, CalendarHeaderComponent_button_5_Template, 2, 3, "button", 4);
|
|
34
|
+
i0.ɵɵelementEnd();
|
|
35
|
+
i0.ɵɵelementStart(6, "div", 5)(7, "button", 6);
|
|
36
|
+
i0.ɵɵlistener("click", function CalendarHeaderComponent_Template_button_click_7_listener() { return ctx.prev.emit(); });
|
|
37
|
+
i0.ɵɵtext(8, "\u2039");
|
|
38
|
+
i0.ɵɵelementEnd();
|
|
39
|
+
i0.ɵɵelementStart(9, "button", 7);
|
|
40
|
+
i0.ɵɵlistener("click", function CalendarHeaderComponent_Template_button_click_9_listener() { return ctx.today.emit(); });
|
|
41
|
+
i0.ɵɵtext(10);
|
|
42
|
+
i0.ɵɵelementEnd();
|
|
43
|
+
i0.ɵɵelementStart(11, "button", 6);
|
|
44
|
+
i0.ɵɵlistener("click", function CalendarHeaderComponent_Template_button_click_11_listener() { return ctx.next.emit(); });
|
|
45
|
+
i0.ɵɵtext(12, "\u203A");
|
|
46
|
+
i0.ɵɵelementEnd()()()();
|
|
47
|
+
} if (rf & 2) {
|
|
48
|
+
i0.ɵɵadvance(2);
|
|
49
|
+
i0.ɵɵtextInterpolate(ctx.title);
|
|
50
|
+
i0.ɵɵadvance(3);
|
|
51
|
+
i0.ɵɵproperty("ngForOf", ctx.viewConfigs);
|
|
52
|
+
i0.ɵɵadvance(2);
|
|
53
|
+
i0.ɵɵattribute("aria-label", ctx.locale.prev);
|
|
54
|
+
i0.ɵɵadvance(3);
|
|
55
|
+
i0.ɵɵtextInterpolate(ctx.locale.today);
|
|
56
|
+
i0.ɵɵadvance();
|
|
57
|
+
i0.ɵɵattribute("aria-label", ctx.locale.next);
|
|
58
|
+
} }, dependencies: [CommonModule, i1.NgForOf], encapsulation: 2 });
|
|
59
|
+
}
|
|
60
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CalendarHeaderComponent, [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: 'cal-header',
|
|
64
|
+
standalone: true,
|
|
65
|
+
host: { style: 'display: contents' },
|
|
66
|
+
imports: [CommonModule],
|
|
67
|
+
template: `
|
|
68
|
+
<div class="calendar-header">
|
|
69
|
+
<h1 class="month-title">{{ title }}</h1>
|
|
70
|
+
<div class="header-controls">
|
|
71
|
+
<div class="view-switcher">
|
|
72
|
+
<button *ngFor="let vc of viewConfigs"
|
|
73
|
+
[class]="'view-btn' + (currentView === vc.type ? ' view-btn--active' : '')"
|
|
74
|
+
(click)="viewChange.emit(vc.type)">
|
|
75
|
+
{{ vc.label }}
|
|
76
|
+
</button>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="nav-controls">
|
|
79
|
+
<button class="nav-btn" [attr.aria-label]="locale.prev" (click)="prev.emit()">‹</button>
|
|
80
|
+
<button class="today-btn" (click)="today.emit()">{{ locale.today }}</button>
|
|
81
|
+
<button class="nav-btn" [attr.aria-label]="locale.next" (click)="next.emit()">›</button>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
`,
|
|
86
|
+
}]
|
|
87
|
+
}], null, { title: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], currentView: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], viewConfigs: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], locale: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], prev: [{
|
|
96
|
+
type: Output
|
|
97
|
+
}], next: [{
|
|
98
|
+
type: Output
|
|
99
|
+
}], today: [{
|
|
100
|
+
type: Output
|
|
101
|
+
}], viewChange: [{
|
|
102
|
+
type: Output
|
|
103
|
+
}] }); })();
|
|
104
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CalendarHeaderComponent, { className: "CalendarHeaderComponent", filePath: "components/calendarheader.ts", lineNumber: 31 }); })();
|
|
105
|
+
//# sourceMappingURL=CalendarHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarHeader.js","sourceRoot":"","sources":["../../src/components/CalendarHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;;;IAcrC,iCAEqC;IAAnC,8MAAS,kCAAwB,KAAC;IAClC,YACF;IAAA,iBAAS;;;;IAHP,0FAA2E;IAE3E,cACF;IADE,4CACF;;AAWV,MAAM,OAAO,uBAAuB;IACzB,KAAK,GAAG,EAAE,CAAC;IACX,WAAW,GAAa,OAAO,CAAC;IAChC,WAAW,GAAiB,EAAE,CAAC;IAC/B,MAAM,CAAkB;IACvB,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;IAChC,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;IAChC,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;IACjC,UAAU,GAAG,IAAI,YAAY,EAAY,CAAC;iHARzC,uBAAuB;6DAAvB,uBAAuB;YAlB9B,AADF,8BAA6B,YACH;YAAA,YAAW;YAAA,iBAAK;YAEtC,AADF,8BAA6B,aACA;YACzB,8EAEqC;YAGvC,iBAAM;YAEJ,AADF,8BAA0B,gBACsD;YAAtB,oGAAS,eAAW,IAAC;YAAC,sBAAQ;YAAA,iBAAS;YAC/F,iCAAiD;YAAvB,oGAAS,gBAAY,IAAC;YAAC,aAAkB;YAAA,iBAAS;YAC5E,kCAA8E;YAAtB,qGAAS,eAAW,IAAC;YAAC,uBAAQ;YAG5F,AADE,AADE,AADwF,iBAAS,EAC3F,EACF,EACF;;YAfoB,eAAW;YAAX,+BAAW;YAGR,eAAc;YAAd,yCAAc;YAOb,eAA+B;;YACN,eAAkB;YAAlB,sCAAkB;YAC3C,cAA+B;;4BAfrD,YAAY;;iFAqBX,uBAAuB;cAzBnC,SAAS;eAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;GAkBT;aACF;gBAEU,KAAK;kBAAb,KAAK;YACG,WAAW;kBAAnB,KAAK;YACG,WAAW;kBAAnB,KAAK;YACG,MAAM;kBAAd,KAAK;YACI,IAAI;kBAAb,MAAM;YACG,IAAI;kBAAb,MAAM;YACG,KAAK;kBAAd,MAAM;YACG,UAAU;kBAAnB,MAAM;;kFARI,uBAAuB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import type { Category } from '../binding/index.js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CategoryFilterComponent {
|
|
5
|
+
categories: Category[];
|
|
6
|
+
hiddenCategories: ReadonlySet<string>;
|
|
7
|
+
toggle: EventEmitter<string>;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CategoryFilterComponent, never>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CategoryFilterComponent, "cal-category-filter", never, { "categories": { "alias": "categories"; "required": false; }; "hiddenCategories": { "alias": "hiddenCategories"; "required": false; }; }, { "toggle": "toggle"; }, never, never, true, never>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=CategoryFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryFilter.d.ts","sourceRoot":"","sources":["../../src/components/CategoryFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;;AAEpD,qBAiBa,uBAAuB;IACzB,UAAU,EAAE,QAAQ,EAAE,CAAM;IAC5B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAa;IACjD,MAAM,uBAA8B;yCAHnC,uBAAuB;2CAAvB,uBAAuB;CAInC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
function CategoryFilterComponent_div_0_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
7
|
+
i0.ɵɵelementStart(0, "button", 3);
|
|
8
|
+
i0.ɵɵlistener("click", function CategoryFilterComponent_div_0_button_1_Template_button_click_0_listener() { const cat_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggle.emit(cat_r2.name)); });
|
|
9
|
+
i0.ɵɵtext(1);
|
|
10
|
+
i0.ɵɵelementEnd();
|
|
11
|
+
} if (rf & 2) {
|
|
12
|
+
const cat_r2 = ctx.$implicit;
|
|
13
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
14
|
+
i0.ɵɵclassMap("category-filter__pill" + (ctx_r2.hiddenCategories.has(cat_r2.name) ? " category-filter__pill--hidden" : ""));
|
|
15
|
+
i0.ɵɵstyleProp("background-color", cat_r2.color);
|
|
16
|
+
i0.ɵɵadvance();
|
|
17
|
+
i0.ɵɵtextInterpolate1(" ", cat_r2.name, " ");
|
|
18
|
+
} }
|
|
19
|
+
function CategoryFilterComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
21
|
+
i0.ɵɵtemplate(1, CategoryFilterComponent_div_0_button_1_Template, 2, 5, "button", 2);
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
25
|
+
i0.ɵɵadvance();
|
|
26
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.categories);
|
|
27
|
+
} }
|
|
28
|
+
export class CategoryFilterComponent {
|
|
29
|
+
categories = [];
|
|
30
|
+
hiddenCategories = new Set();
|
|
31
|
+
toggle = new EventEmitter();
|
|
32
|
+
static ɵfac = function CategoryFilterComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CategoryFilterComponent)(); };
|
|
33
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CategoryFilterComponent, selectors: [["cal-category-filter"]], hostAttrs: [2, "display", "contents"], inputs: { categories: "categories", hiddenCategories: "hiddenCategories" }, outputs: { toggle: "toggle" }, decls: 1, vars: 1, consts: [["class", "category-filter", 4, "ngIf"], [1, "category-filter"], ["type", "button", 3, "class", "background-color", "click", 4, "ngFor", "ngForOf"], ["type", "button", 3, "click"]], template: function CategoryFilterComponent_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵtemplate(0, CategoryFilterComponent_div_0_Template, 2, 1, "div", 0);
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
i0.ɵɵproperty("ngIf", ctx.categories.length > 0);
|
|
37
|
+
} }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf], encapsulation: 2 });
|
|
38
|
+
}
|
|
39
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CategoryFilterComponent, [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: 'cal-category-filter',
|
|
43
|
+
standalone: true,
|
|
44
|
+
host: { style: 'display: contents' },
|
|
45
|
+
imports: [CommonModule],
|
|
46
|
+
template: `
|
|
47
|
+
<div class="category-filter" *ngIf="categories.length > 0">
|
|
48
|
+
<button *ngFor="let cat of categories"
|
|
49
|
+
[class]="'category-filter__pill' + (hiddenCategories.has(cat.name) ? ' category-filter__pill--hidden' : '')"
|
|
50
|
+
[style.background-color]="cat.color"
|
|
51
|
+
(click)="toggle.emit(cat.name)"
|
|
52
|
+
type="button">
|
|
53
|
+
{{ cat.name }}
|
|
54
|
+
</button>
|
|
55
|
+
</div>
|
|
56
|
+
`,
|
|
57
|
+
}]
|
|
58
|
+
}], null, { categories: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], hiddenCategories: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], toggle: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}] }); })();
|
|
65
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CategoryFilterComponent, { className: "CategoryFilterComponent", filePath: "components/categoryfilter.ts", lineNumber: 22 }); })();
|
|
66
|
+
//# sourceMappingURL=CategoryFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryFilter.js","sourceRoot":"","sources":["../../src/components/CategoryFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;;;IAUzC,iCAIgB;IADd,sNAAS,+BAAqB,KAAC;IAE/B,YACF;IAAA,iBAAS;;;;IALP,2HAA4G;IAC5G,gDAAoC;IAGpC,cACF;IADE,4CACF;;;IAPF,8BAA2D;IACzD,oFAIgB;IAGlB,iBAAM;;;IAPoB,cAAa;IAAb,2CAAa;;AAU3C,MAAM,OAAO,uBAAuB;IACzB,UAAU,GAAe,EAAE,CAAC;IAC5B,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,GAAG,IAAI,YAAY,EAAU,CAAC;iHAHnC,uBAAuB;6DAAvB,uBAAuB;YAXhC,wEAA2D;;YAA7B,gDAA2B;4BAFjD,YAAY;;iFAaX,uBAAuB;cAjBnC,SAAS;eAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,QAAQ,EAAE;;;;;;;;;;GAUT;aACF;gBAEU,UAAU;kBAAlB,KAAK;YACG,gBAAgB;kBAAxB,KAAK;YACI,MAAM;kBAAf,MAAM;;kFAHI,uBAAuB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import type { CalendarDateTime, LayoutItem } from '@bimetal/calendar-core';
|
|
3
|
+
import { type DragInfo } from '@bimetal/calendar-headless';
|
|
4
|
+
import { EventRenderService } from '../binding/index.js';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class EventBarComponent {
|
|
7
|
+
private renderService?;
|
|
8
|
+
item: LayoutItem;
|
|
9
|
+
weekDates: CalendarDateTime[];
|
|
10
|
+
ghost: boolean;
|
|
11
|
+
clickThresholdMs: number;
|
|
12
|
+
selectedEventId: string | null;
|
|
13
|
+
selectedInstanceDate: number | undefined;
|
|
14
|
+
eventClick: EventEmitter<{
|
|
15
|
+
eventId: string;
|
|
16
|
+
rect: DOMRect;
|
|
17
|
+
instanceDate?: number;
|
|
18
|
+
}>;
|
|
19
|
+
selectEvent: EventEmitter<{
|
|
20
|
+
eventId: string;
|
|
21
|
+
instanceDate?: number;
|
|
22
|
+
}>;
|
|
23
|
+
dragStart: EventEmitter<DragInfo>;
|
|
24
|
+
/** Native `dragend` der Source — bubbelt aus Body und Resize-Handles. */
|
|
25
|
+
dragEnd: EventEmitter<void>;
|
|
26
|
+
private click;
|
|
27
|
+
constructor(renderService?: EventRenderService | undefined);
|
|
28
|
+
get badgesTpl(): import("@angular/core").TemplateRef<import("../index.js").EventRenderTemplateContext> | undefined;
|
|
29
|
+
get contentTpl(): import("@angular/core").TemplateRef<import("../index.js").EventRenderTemplateContext> | undefined;
|
|
30
|
+
get tplCtx(): import("../index.js").EventRenderTemplateContext | undefined;
|
|
31
|
+
get renderedTitle(): string;
|
|
32
|
+
get slotsClassName(): string;
|
|
33
|
+
get slotsStyle(): Record<string, string | number> | undefined;
|
|
34
|
+
get segment(): import("@bimetal/calendar-core").Segment;
|
|
35
|
+
get event(): import("@bimetal/calendar-core").CalendarEvent;
|
|
36
|
+
get color(): string;
|
|
37
|
+
get wantsDarkText(): boolean;
|
|
38
|
+
get isRecurring(): boolean;
|
|
39
|
+
get isCompact(): boolean;
|
|
40
|
+
get ghostClass(): "" | " event-bar--ghost";
|
|
41
|
+
get instanceDate(): number | undefined;
|
|
42
|
+
get isSelected(): boolean;
|
|
43
|
+
get selectedClass(): "" | " event-bar--selected";
|
|
44
|
+
get gridColumn(): string;
|
|
45
|
+
get gridRow(): string;
|
|
46
|
+
get borderRadius(): string;
|
|
47
|
+
get startTime(): string;
|
|
48
|
+
handleMouseDown(): void;
|
|
49
|
+
handleDragStart(e: DragEvent): void;
|
|
50
|
+
handleResizeDragStart(e: DragEvent, edge: 'start' | 'end'): void;
|
|
51
|
+
handleClick(e: MouseEvent): void;
|
|
52
|
+
handleDoubleClick(e: MouseEvent): void;
|
|
53
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EventBarComponent, [{ optional: true; }]>;
|
|
54
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EventBarComponent, "cal-event-bar", never, { "item": { "alias": "item"; "required": false; }; "weekDates": { "alias": "weekDates"; "required": false; }; "ghost": { "alias": "ghost"; "required": false; }; "clickThresholdMs": { "alias": "clickThresholdMs"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "dragStart": "dragStart"; "dragEnd": "dragEnd"; }, never, never, true, never>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=EventBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBar.d.ts","sourceRoot":"","sources":["../../src/components/EventBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAY,MAAM,eAAe,CAAC;AAEjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EAA0H,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACnL,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;;AAEzD,qBA2Ea,iBAAiB;IAeJ,OAAO,CAAC,aAAa,CAAC;IAdrC,IAAI,EAAG,UAAU,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,KAAK,UAAS;IACd,gBAAgB,SAAO;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAa;IACpD,UAAU;iBAA+B,MAAM;cAAQ,OAAO;uBAAiB,MAAM;OAAM;IAC3F,WAAW;iBAA+B,MAAM;uBAAiB,MAAM;OAAM;IAC7E,SAAS,yBAAgC;IACnD,yEAAyE;IAC/D,OAAO,qBAA4B;IAE7C,OAAO,CAAC,KAAK,CAAuB;gBAEJ,aAAa,CAAC,EAAE,kBAAkB,YAAA;IAElE,IAAI,SAAS,sGAAiD;IAC9D,IAAI,UAAU,sGAAkD;IAChE,IAAI,MAAM,iEAAmE;IAC7E,IAAI,aAAa,WAA+E;IAChG,IAAI,cAAc,WAGjB;IACD,IAAI,UAAU,gDAA2D;IAEzE,IAAI,OAAO,6CAAgC;IAC3C,IAAI,KAAK,mDAAiC;IAC1C,IAAI,KAAK,WAAiF;IAC1F,IAAI,aAAa,YAAgD;IACjE,IAAI,WAAW,YAAkF;IACjG,IAAI,SAAS,YAA0G;IACvH,IAAI,UAAU,6BAAoD;IAClE,IAAI,YAAY,uBAAsE;IACtF,IAAI,UAAU,YAEb;IACD,IAAI,aAAa,gCAA4D;IAC7E,IAAI,UAAU,WAAsE;IACpF,IAAI,OAAO,WAA2C;IACtD,IAAI,YAAY,WAIf;IACD,IAAI,SAAS,WAEZ;IAED,eAAe;IAIf,eAAe,CAAC,CAAC,EAAE,SAAS;IAgB5B,qBAAqB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK;IASzD,WAAW,CAAC,CAAC,EAAE,UAAU;IAMzB,iBAAiB,CAAC,CAAC,EAAE,UAAU;yCArFpB,iBAAiB;2CAAjB,iBAAiB;CA2F7B"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, Optional } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { daysBetween, getRecurrenceInstanceMetadata, isExpandedRecurrenceInstance } from '@bimetal/calendar-core';
|
|
4
|
+
import { buildDragInfo, createClickIntent, writeCalendarDragData, installTransparentDragImage, toTimeStr, eventBarWantsDarkText } from '@bimetal/calendar-headless';
|
|
5
|
+
import { EventRenderService } from '../binding/index.js';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../binding/index.js";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
function EventBarComponent_div_0_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
i0.ɵɵelementContainer(0);
|
|
11
|
+
} }
|
|
12
|
+
function EventBarComponent_div_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
i0.ɵɵelementContainerStart(0);
|
|
14
|
+
i0.ɵɵtemplate(1, EventBarComponent_div_0_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 7);
|
|
15
|
+
i0.ɵɵelementContainerEnd();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
18
|
+
i0.ɵɵadvance();
|
|
19
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.contentTpl)("ngTemplateOutletContext", ctx_r1.tplCtx);
|
|
20
|
+
} }
|
|
21
|
+
function EventBarComponent_div_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
i0.ɵɵelement(0, "span", 8);
|
|
23
|
+
i0.ɵɵelementStart(1, "span", 9);
|
|
24
|
+
i0.ɵɵtext(2);
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
i0.ɵɵelementStart(3, "span", 10);
|
|
27
|
+
i0.ɵɵtext(4);
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
31
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.color);
|
|
32
|
+
i0.ɵɵadvance(2);
|
|
33
|
+
i0.ɵɵtextInterpolate(ctx_r1.startTime);
|
|
34
|
+
i0.ɵɵadvance(2);
|
|
35
|
+
i0.ɵɵtextInterpolate2("", ctx_r1.isRecurring ? "\u21BB " : "", "", ctx_r1.renderedTitle, "");
|
|
36
|
+
} }
|
|
37
|
+
function EventBarComponent_div_0_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementContainer(0);
|
|
39
|
+
} }
|
|
40
|
+
function EventBarComponent_div_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelementContainerStart(0);
|
|
42
|
+
i0.ɵɵtemplate(1, EventBarComponent_div_0_ng_container_4_ng_container_1_Template, 1, 0, "ng-container", 7);
|
|
43
|
+
i0.ɵɵelementContainerEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
46
|
+
i0.ɵɵadvance();
|
|
47
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.badgesTpl)("ngTemplateOutletContext", ctx_r1.tplCtx);
|
|
48
|
+
} }
|
|
49
|
+
function EventBarComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 4);
|
|
52
|
+
i0.ɵɵlistener("mousedown", function EventBarComponent_div_0_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleMouseDown()); })("dragstart", function EventBarComponent_div_0_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDragStart($event)); })("dragend", function EventBarComponent_div_0_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.dragEnd.emit()); })("click", function EventBarComponent_div_0_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleClick($event)); })("dblclick", function EventBarComponent_div_0_Template_div_dblclick_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDoubleClick($event)); });
|
|
53
|
+
i0.ɵɵtemplate(1, EventBarComponent_div_0_ng_container_1_Template, 2, 2, "ng-container", 5)(2, EventBarComponent_div_0_ng_template_2_Template, 5, 5, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(4, EventBarComponent_div_0_ng_container_4_Template, 2, 2, "ng-container", 6);
|
|
54
|
+
i0.ɵɵelementEnd();
|
|
55
|
+
} if (rf & 2) {
|
|
56
|
+
const defaultCompact_r3 = i0.ɵɵreference(3);
|
|
57
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
58
|
+
i0.ɵɵclassMap("event-bar event-bar--single" + ctx_r1.ghostClass + ctx_r1.selectedClass + ctx_r1.slotsClassName);
|
|
59
|
+
i0.ɵɵstyleProp("grid-column", ctx_r1.gridColumn)("grid-row", ctx_r1.gridRow);
|
|
60
|
+
i0.ɵɵproperty("ngStyle", ctx_r1.slotsStyle)("title", ctx_r1.renderedTitle);
|
|
61
|
+
i0.ɵɵattribute("draggable", !ctx_r1.ghost);
|
|
62
|
+
i0.ɵɵadvance();
|
|
63
|
+
i0.ɵɵproperty("ngIf", ctx_r1.contentTpl)("ngIfElse", defaultCompact_r3);
|
|
64
|
+
i0.ɵɵadvance(3);
|
|
65
|
+
i0.ɵɵproperty("ngIf", ctx_r1.badgesTpl);
|
|
66
|
+
} }
|
|
67
|
+
function EventBarComponent_ng_template_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
70
|
+
i0.ɵɵlistener("dragstart", function EventBarComponent_ng_template_1_div_1_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleResizeDragStart($event, "start")); })("dragend", function EventBarComponent_ng_template_1_div_1_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.dragEnd.emit()); })("mousedown", function EventBarComponent_ng_template_1_div_1_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r5); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
71
|
+
i0.ɵɵelementEnd();
|
|
72
|
+
} }
|
|
73
|
+
function EventBarComponent_ng_template_1_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelementContainer(0);
|
|
75
|
+
} }
|
|
76
|
+
function EventBarComponent_ng_template_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
i0.ɵɵelementContainerStart(0);
|
|
78
|
+
i0.ɵɵtemplate(1, EventBarComponent_ng_template_1_ng_container_2_ng_container_1_Template, 1, 0, "ng-container", 7);
|
|
79
|
+
i0.ɵɵelementContainerEnd();
|
|
80
|
+
} if (rf & 2) {
|
|
81
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
82
|
+
i0.ɵɵadvance();
|
|
83
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.contentTpl)("ngTemplateOutletContext", ctx_r1.tplCtx);
|
|
84
|
+
} }
|
|
85
|
+
function EventBarComponent_ng_template_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
i0.ɵɵelementStart(0, "span", 14);
|
|
87
|
+
i0.ɵɵtext(1);
|
|
88
|
+
i0.ɵɵelementEnd();
|
|
89
|
+
} if (rf & 2) {
|
|
90
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
91
|
+
i0.ɵɵclassProp("event-title--on-light", ctx_r1.wantsDarkText);
|
|
92
|
+
i0.ɵɵadvance();
|
|
93
|
+
i0.ɵɵtextInterpolate2("", ctx_r1.isRecurring ? "\u21BB " : "", "", ctx_r1.renderedTitle, "");
|
|
94
|
+
} }
|
|
95
|
+
function EventBarComponent_ng_template_1_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵelementContainer(0);
|
|
97
|
+
} }
|
|
98
|
+
function EventBarComponent_ng_template_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementContainerStart(0);
|
|
100
|
+
i0.ɵɵtemplate(1, EventBarComponent_ng_template_1_ng_container_5_ng_container_1_Template, 1, 0, "ng-container", 7);
|
|
101
|
+
i0.ɵɵelementContainerEnd();
|
|
102
|
+
} if (rf & 2) {
|
|
103
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
104
|
+
i0.ɵɵadvance();
|
|
105
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.badgesTpl)("ngTemplateOutletContext", ctx_r1.tplCtx);
|
|
106
|
+
} }
|
|
107
|
+
function EventBarComponent_ng_template_1_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
109
|
+
i0.ɵɵelementStart(0, "div", 15);
|
|
110
|
+
i0.ɵɵlistener("dragstart", function EventBarComponent_ng_template_1_div_6_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleResizeDragStart($event, "end")); })("dragend", function EventBarComponent_ng_template_1_div_6_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.dragEnd.emit()); })("mousedown", function EventBarComponent_ng_template_1_div_6_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r6); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
111
|
+
i0.ɵɵelementEnd();
|
|
112
|
+
} }
|
|
113
|
+
function EventBarComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
115
|
+
i0.ɵɵelementStart(0, "div", 4);
|
|
116
|
+
i0.ɵɵlistener("mousedown", function EventBarComponent_ng_template_1_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleMouseDown()); })("dragstart", function EventBarComponent_ng_template_1_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDragStart($event)); })("dragend", function EventBarComponent_ng_template_1_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.dragEnd.emit()); })("click", function EventBarComponent_ng_template_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleClick($event)); })("dblclick", function EventBarComponent_ng_template_1_Template_div_dblclick_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDoubleClick($event)); });
|
|
117
|
+
i0.ɵɵtemplate(1, EventBarComponent_ng_template_1_div_1_Template, 1, 0, "div", 11)(2, EventBarComponent_ng_template_1_ng_container_2_Template, 2, 2, "ng-container", 5)(3, EventBarComponent_ng_template_1_ng_template_3_Template, 2, 4, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(5, EventBarComponent_ng_template_1_ng_container_5_Template, 2, 2, "ng-container", 6)(6, EventBarComponent_ng_template_1_div_6_Template, 1, 0, "div", 12);
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const defaultMulti_r7 = i0.ɵɵreference(4);
|
|
121
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
122
|
+
i0.ɵɵclassMap("event-bar event-bar--multi" + ctx_r1.ghostClass + ctx_r1.selectedClass + ctx_r1.slotsClassName);
|
|
123
|
+
i0.ɵɵstyleProp("grid-column", ctx_r1.gridColumn)("grid-row", ctx_r1.gridRow)("background-color", ctx_r1.color)("border-radius", ctx_r1.borderRadius);
|
|
124
|
+
i0.ɵɵproperty("ngStyle", ctx_r1.slotsStyle)("title", ctx_r1.renderedTitle);
|
|
125
|
+
i0.ɵɵattribute("draggable", !ctx_r1.ghost);
|
|
126
|
+
i0.ɵɵadvance();
|
|
127
|
+
i0.ɵɵproperty("ngIf", ctx_r1.item.segment.isStart && !ctx_r1.ghost);
|
|
128
|
+
i0.ɵɵadvance();
|
|
129
|
+
i0.ɵɵproperty("ngIf", ctx_r1.contentTpl)("ngIfElse", defaultMulti_r7);
|
|
130
|
+
i0.ɵɵadvance(3);
|
|
131
|
+
i0.ɵɵproperty("ngIf", ctx_r1.badgesTpl);
|
|
132
|
+
i0.ɵɵadvance();
|
|
133
|
+
i0.ɵɵproperty("ngIf", ctx_r1.item.segment.isEnd && !ctx_r1.ghost);
|
|
134
|
+
} }
|
|
135
|
+
export class EventBarComponent {
|
|
136
|
+
renderService;
|
|
137
|
+
item;
|
|
138
|
+
weekDates = [];
|
|
139
|
+
ghost = false;
|
|
140
|
+
clickThresholdMs = 300;
|
|
141
|
+
selectedEventId = null;
|
|
142
|
+
selectedInstanceDate = undefined;
|
|
143
|
+
eventClick = new EventEmitter();
|
|
144
|
+
selectEvent = new EventEmitter();
|
|
145
|
+
dragStart = new EventEmitter();
|
|
146
|
+
/** Native `dragend` der Source — bubbelt aus Body und Resize-Handles. */
|
|
147
|
+
dragEnd = new EventEmitter();
|
|
148
|
+
click = createClickIntent();
|
|
149
|
+
constructor(renderService) {
|
|
150
|
+
this.renderService = renderService;
|
|
151
|
+
}
|
|
152
|
+
get badgesTpl() { return this.renderService?.eventBadgesTpl; }
|
|
153
|
+
get contentTpl() { return this.renderService?.eventContentTpl; }
|
|
154
|
+
get tplCtx() { return this.renderService?.buildTemplateContext(this.event); }
|
|
155
|
+
get renderedTitle() { return this.renderService?.resolveTitle(this.event) ?? this.event.title; }
|
|
156
|
+
get slotsClassName() {
|
|
157
|
+
const cls = this.renderService?.resolveClassName(this.event) ?? '';
|
|
158
|
+
return cls ? ' ' + cls : '';
|
|
159
|
+
}
|
|
160
|
+
get slotsStyle() { return this.renderService?.resolveStyle(this.event); }
|
|
161
|
+
get segment() { return this.item.segment; }
|
|
162
|
+
get event() { return this.segment.event; }
|
|
163
|
+
get color() { return this.event.metadata.color ?? '#007AFF'; }
|
|
164
|
+
get wantsDarkText() { return eventBarWantsDarkText(this.color); }
|
|
165
|
+
get isRecurring() { return isExpandedRecurrenceInstance(this.event) || !!this.event.recurrence; }
|
|
166
|
+
get isCompact() { return this.item.daySpan === 1 && this.segment.isStart && this.segment.isEnd && !this.event.allDay; }
|
|
167
|
+
get ghostClass() { return this.ghost ? ' event-bar--ghost' : ''; }
|
|
168
|
+
get instanceDate() { return getRecurrenceInstanceMetadata(this.event)?.instanceDate; }
|
|
169
|
+
get isSelected() {
|
|
170
|
+
return this.selectedEventId === this.event.id && this.selectedInstanceDate === this.instanceDate;
|
|
171
|
+
}
|
|
172
|
+
get selectedClass() { return this.isSelected ? ' event-bar--selected' : ''; }
|
|
173
|
+
get gridColumn() { return `${this.item.dayIndex + 1} / span ${this.item.daySpan}`; }
|
|
174
|
+
get gridRow() { return String(this.item.column + 1); }
|
|
175
|
+
get borderRadius() {
|
|
176
|
+
const s = this.segment.isStart ? 4 : 0;
|
|
177
|
+
const e = this.segment.isEnd ? 4 : 0;
|
|
178
|
+
return `${s}px ${e}px ${e}px ${s}px`;
|
|
179
|
+
}
|
|
180
|
+
get startTime() {
|
|
181
|
+
return toTimeStr(this.event.timeRange.start);
|
|
182
|
+
}
|
|
183
|
+
handleMouseDown() {
|
|
184
|
+
this.click.markMouseDown();
|
|
185
|
+
}
|
|
186
|
+
handleDragStart(e) {
|
|
187
|
+
this.click.markDragged();
|
|
188
|
+
const bar = e.currentTarget;
|
|
189
|
+
const barRect = bar.getBoundingClientRect();
|
|
190
|
+
const colWidth = barRect.width / this.item.daySpan;
|
|
191
|
+
const grabColInBar = Math.min(Math.max(0, Math.floor((e.clientX - barRect.left) / colWidth)), this.item.daySpan - 1);
|
|
192
|
+
const grabbedDate = this.weekDates[this.item.dayIndex + grabColInBar];
|
|
193
|
+
const offset = daysBetween(this.event.timeRange.start, grabbedDate);
|
|
194
|
+
const info = buildDragInfo(this.event, 'move', { dayOffset: offset });
|
|
195
|
+
writeCalendarDragData(e.dataTransfer, info);
|
|
196
|
+
this.dragStart.emit(info);
|
|
197
|
+
}
|
|
198
|
+
handleResizeDragStart(e, edge) {
|
|
199
|
+
e.stopPropagation();
|
|
200
|
+
this.click.markDragged();
|
|
201
|
+
installTransparentDragImage(e.dataTransfer);
|
|
202
|
+
const info = buildDragInfo(this.event, 'resize', { edge });
|
|
203
|
+
writeCalendarDragData(e.dataTransfer, info);
|
|
204
|
+
this.dragStart.emit(info);
|
|
205
|
+
}
|
|
206
|
+
handleClick(e) {
|
|
207
|
+
e.stopPropagation();
|
|
208
|
+
if (!this.click.accept(this.clickThresholdMs))
|
|
209
|
+
return;
|
|
210
|
+
this.selectEvent.emit({ eventId: this.event.id, instanceDate: this.instanceDate });
|
|
211
|
+
}
|
|
212
|
+
handleDoubleClick(e) {
|
|
213
|
+
e.stopPropagation();
|
|
214
|
+
if (!this.click.accept(this.clickThresholdMs))
|
|
215
|
+
return;
|
|
216
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
217
|
+
this.eventClick.emit({ eventId: this.event.id, rect, instanceDate: this.instanceDate });
|
|
218
|
+
}
|
|
219
|
+
static ɵfac = function EventBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EventBarComponent)(i0.ɵɵdirectiveInject(i1.EventRenderService, 8)); };
|
|
220
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EventBarComponent, selectors: [["cal-event-bar"]], hostAttrs: [2, "display", "contents"], inputs: { item: "item", weekDates: "weekDates", ghost: "ghost", clickThresholdMs: "clickThresholdMs", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", dragStart: "dragStart", dragEnd: "dragEnd" }, decls: 3, vars: 2, consts: [["multiTpl", ""], ["defaultCompact", ""], ["defaultMulti", ""], [3, "class", "grid-column", "grid-row", "ngStyle", "title", "mousedown", "dragstart", "dragend", "click", "dblclick", 4, "ngIf", "ngIfElse"], [3, "mousedown", "dragstart", "dragend", "click", "dblclick", "ngStyle", "title"], [4, "ngIf", "ngIfElse"], [4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "event-dot"], [1, "event-time"], [1, "event-title", "event-title--dark"], ["class", "resize-handle resize-handle--start", "draggable", "true", 3, "dragstart", "dragend", "mousedown", 4, "ngIf"], ["class", "resize-handle resize-handle--end", "draggable", "true", 3, "dragstart", "dragend", "mousedown", 4, "ngIf"], ["draggable", "true", 1, "resize-handle", "resize-handle--start", 3, "dragstart", "dragend", "mousedown"], [1, "event-title"], ["draggable", "true", 1, "resize-handle", "resize-handle--end", 3, "dragstart", "dragend", "mousedown"]], template: function EventBarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
221
|
+
i0.ɵɵtemplate(0, EventBarComponent_div_0_Template, 5, 12, "div", 3)(1, EventBarComponent_ng_template_1_Template, 7, 18, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
222
|
+
} if (rf & 2) {
|
|
223
|
+
const multiTpl_r8 = i0.ɵɵreference(2);
|
|
224
|
+
i0.ɵɵproperty("ngIf", ctx.isCompact)("ngIfElse", multiTpl_r8);
|
|
225
|
+
} }, dependencies: [CommonModule, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle], encapsulation: 2 });
|
|
226
|
+
}
|
|
227
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventBarComponent, [{
|
|
228
|
+
type: Component,
|
|
229
|
+
args: [{
|
|
230
|
+
selector: 'cal-event-bar',
|
|
231
|
+
standalone: true,
|
|
232
|
+
host: { style: 'display: contents' },
|
|
233
|
+
imports: [CommonModule],
|
|
234
|
+
template: `
|
|
235
|
+
<!-- Compact single-day timed event -->
|
|
236
|
+
<div *ngIf="isCompact; else multiTpl"
|
|
237
|
+
[class]="'event-bar event-bar--single' + ghostClass + selectedClass + slotsClassName"
|
|
238
|
+
[style.grid-column]="gridColumn"
|
|
239
|
+
[style.grid-row]="gridRow"
|
|
240
|
+
[ngStyle]="slotsStyle"
|
|
241
|
+
[attr.draggable]="!ghost"
|
|
242
|
+
(mousedown)="handleMouseDown()"
|
|
243
|
+
(dragstart)="handleDragStart($event)"
|
|
244
|
+
(dragend)="dragEnd.emit()"
|
|
245
|
+
(click)="handleClick($event)"
|
|
246
|
+
(dblclick)="handleDoubleClick($event)"
|
|
247
|
+
[title]="renderedTitle">
|
|
248
|
+
<ng-container *ngIf="contentTpl; else defaultCompact">
|
|
249
|
+
<ng-container *ngTemplateOutlet="contentTpl; context: tplCtx"></ng-container>
|
|
250
|
+
</ng-container>
|
|
251
|
+
<ng-template #defaultCompact>
|
|
252
|
+
<span class="event-dot" [style.background-color]="color"></span>
|
|
253
|
+
<span class="event-time">{{ startTime }}</span>
|
|
254
|
+
<span class="event-title event-title--dark">{{ isRecurring ? '↻ ' : '' }}{{ renderedTitle }}</span>
|
|
255
|
+
</ng-template>
|
|
256
|
+
<ng-container *ngIf="badgesTpl">
|
|
257
|
+
<ng-container *ngTemplateOutlet="badgesTpl; context: tplCtx"></ng-container>
|
|
258
|
+
</ng-container>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<!-- Multi-day / all-day bar -->
|
|
262
|
+
<ng-template #multiTpl>
|
|
263
|
+
<div
|
|
264
|
+
[class]="'event-bar event-bar--multi' + ghostClass + selectedClass + slotsClassName"
|
|
265
|
+
[style.grid-column]="gridColumn"
|
|
266
|
+
[style.grid-row]="gridRow"
|
|
267
|
+
[style.background-color]="color"
|
|
268
|
+
[style.border-radius]="borderRadius"
|
|
269
|
+
[ngStyle]="slotsStyle"
|
|
270
|
+
[attr.draggable]="!ghost"
|
|
271
|
+
(mousedown)="handleMouseDown()"
|
|
272
|
+
(dragstart)="handleDragStart($event)"
|
|
273
|
+
(dragend)="dragEnd.emit()"
|
|
274
|
+
(click)="handleClick($event)"
|
|
275
|
+
(dblclick)="handleDoubleClick($event)"
|
|
276
|
+
[title]="renderedTitle">
|
|
277
|
+
<div *ngIf="item.segment.isStart && !ghost"
|
|
278
|
+
class="resize-handle resize-handle--start"
|
|
279
|
+
draggable="true"
|
|
280
|
+
(dragstart)="handleResizeDragStart($event, 'start')"
|
|
281
|
+
(dragend)="dragEnd.emit()"
|
|
282
|
+
(mousedown)="$event.stopPropagation()">
|
|
283
|
+
</div>
|
|
284
|
+
<ng-container *ngIf="contentTpl; else defaultMulti">
|
|
285
|
+
<ng-container *ngTemplateOutlet="contentTpl; context: tplCtx"></ng-container>
|
|
286
|
+
</ng-container>
|
|
287
|
+
<ng-template #defaultMulti>
|
|
288
|
+
<span class="event-title" [class.event-title--on-light]="wantsDarkText">{{ isRecurring ? '↻ ' : '' }}{{ renderedTitle }}</span>
|
|
289
|
+
</ng-template>
|
|
290
|
+
<ng-container *ngIf="badgesTpl">
|
|
291
|
+
<ng-container *ngTemplateOutlet="badgesTpl; context: tplCtx"></ng-container>
|
|
292
|
+
</ng-container>
|
|
293
|
+
<div *ngIf="item.segment.isEnd && !ghost"
|
|
294
|
+
class="resize-handle resize-handle--end"
|
|
295
|
+
draggable="true"
|
|
296
|
+
(dragstart)="handleResizeDragStart($event, 'end')"
|
|
297
|
+
(dragend)="dragEnd.emit()"
|
|
298
|
+
(mousedown)="$event.stopPropagation()">
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
</ng-template>
|
|
302
|
+
`,
|
|
303
|
+
}]
|
|
304
|
+
}], () => [{ type: i1.EventRenderService, decorators: [{
|
|
305
|
+
type: Optional
|
|
306
|
+
}] }], { item: [{
|
|
307
|
+
type: Input
|
|
308
|
+
}], weekDates: [{
|
|
309
|
+
type: Input
|
|
310
|
+
}], ghost: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], clickThresholdMs: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], selectedEventId: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], selectedInstanceDate: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], eventClick: [{
|
|
319
|
+
type: Output
|
|
320
|
+
}], selectEvent: [{
|
|
321
|
+
type: Output
|
|
322
|
+
}], dragStart: [{
|
|
323
|
+
type: Output
|
|
324
|
+
}], dragEnd: [{
|
|
325
|
+
type: Output
|
|
326
|
+
}] }); })();
|
|
327
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EventBarComponent, { className: "EventBarComponent", filePath: "components/eventbar.ts", lineNumber: 83 }); })();
|
|
328
|
+
//# sourceMappingURL=EventBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBar.js","sourceRoot":"","sources":["../../src/components/EventBar.ts"],"names":[],"mappings":"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"}
|