@idea-ionic/agenda 6.8.0 → 6.9.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/README.md +2 -2
- package/css/global.scss +45 -57
- package/esm2020/src/agenda.component.mjs +138 -19
- package/esm2020/src/agenda.module.mjs +1 -1
- package/esm2020/src/dateFormatter.provider.mjs +13 -26
- package/fesm2015/idea-ionic-agenda.mjs +151 -44
- package/fesm2015/idea-ionic-agenda.mjs.map +1 -1
- package/fesm2020/idea-ionic-agenda.mjs +150 -44
- package/fesm2020/idea-ionic-agenda.mjs.map +1 -1
- package/package.json +1 -1
- package/src/agenda.component.d.ts +68 -21
- package/src/dateFormatter.provider.d.ts +7 -7
|
@@ -3,31 +3,18 @@ import { Injectable } from '@angular/core';
|
|
|
3
3
|
import { CalendarDateFormatter } from 'angular-calendar';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class CustomDateFormatter extends CalendarDateFormatter {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return formatDate(date, 'EEE', locale);
|
|
19
|
-
}
|
|
20
|
-
weekViewTitle({ date, locale }) {
|
|
21
|
-
return formatDate(date, 'MMMM yyyy', locale);
|
|
22
|
-
}
|
|
23
|
-
// DAY VIEW
|
|
24
|
-
dayViewHour({ date, locale }) {
|
|
25
|
-
return locale === 'it' ? formatDate(date, 'HH:mm', locale) : formatDate(date, 'h aa', locale);
|
|
26
|
-
}
|
|
27
|
-
dayViewTitle({ date, locale }) {
|
|
28
|
-
return locale === 'it'
|
|
29
|
-
? formatDate(date, 'EEEE, dd MMM yyyy', locale)
|
|
30
|
-
: formatDate(date, 'EEEE, MMM dd, yyyy', locale);
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
// MONTH VIEW
|
|
9
|
+
this.monthViewColumnHeader = ({ date, locale }) => formatDate(date, 'EEE', locale);
|
|
10
|
+
this.monthViewTitle = ({ date, locale }) => formatDate(date, 'MMMM y', locale);
|
|
11
|
+
// WEEK VIEW
|
|
12
|
+
this.weekViewHour = ({ date, locale }) => locale === 'it' ? formatDate(date, 'HH:mm', locale) : formatDate(date, 'h aa', locale);
|
|
13
|
+
this.weekViewColumnHeader = ({ date, locale }) => formatDate(date, 'EEE', locale);
|
|
14
|
+
this.weekViewTitle = ({ date, locale }) => formatDate(date, 'MMMM yyyy', locale);
|
|
15
|
+
// DAY VIEW
|
|
16
|
+
this.dayViewHour = ({ date, locale }) => locale === 'it' ? formatDate(date, 'HH:mm', locale) : formatDate(date, 'h aa', locale);
|
|
17
|
+
this.dayViewTitle = ({ date, locale }) => locale === 'it' ? formatDate(date, 'EEEE, dd MMM yyyy', locale) : formatDate(date, 'EEEE, MMM dd, yyyy', locale);
|
|
31
18
|
}
|
|
32
19
|
}
|
|
33
20
|
CustomDateFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CustomDateFormatter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -35,4 +22,4 @@ CustomDateFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
|
|
|
35
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CustomDateFormatter, decorators: [{
|
|
36
23
|
type: Injectable
|
|
37
24
|
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZUZvcm1hdHRlci5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9kYXRlRm9ybWF0dGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHOUUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHFCQUFxQjtJQUQ5RDs7UUFFRSxhQUFhO1FBQ2IsMEJBQXFCLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQXVCLEVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNHLG1CQUFjLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQXVCLEVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZHLFlBQVk7UUFDWixpQkFBWSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUF1QixFQUFVLEVBQUUsQ0FDL0QsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pGLHlCQUFvQixHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUF1QixFQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRyxrQkFBYSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUF1QixFQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RyxXQUFXO1FBQ1gsZ0JBQVcsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBdUIsRUFBVSxFQUFFLENBQzlELE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RixpQkFBWSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUF1QixFQUFVLEVBQUUsQ0FDL0QsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNwSDs7Z0hBaEJZLG1CQUFtQjtvSEFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRGF0ZUZvcm1hdHRlciwgRGF0ZUZvcm1hdHRlclBhcmFtcyB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZUZvcm1hdHRlciBleHRlbmRzIENhbGVuZGFyRGF0ZUZvcm1hdHRlciB7XG4gIC8vIE1PTlRIIFZJRVdcbiAgbW9udGhWaWV3Q29sdW1uSGVhZGVyID0gKHsgZGF0ZSwgbG9jYWxlIH06IERhdGVGb3JtYXR0ZXJQYXJhbXMpOiBzdHJpbmcgPT4gZm9ybWF0RGF0ZShkYXRlLCAnRUVFJywgbG9jYWxlKTtcbiAgbW9udGhWaWV3VGl0bGUgPSAoeyBkYXRlLCBsb2NhbGUgfTogRGF0ZUZvcm1hdHRlclBhcmFtcyk6IHN0cmluZyA9PiBmb3JtYXREYXRlKGRhdGUsICdNTU1NIHknLCBsb2NhbGUpO1xuXG4gIC8vIFdFRUsgVklFV1xuICB3ZWVrVmlld0hvdXIgPSAoeyBkYXRlLCBsb2NhbGUgfTogRGF0ZUZvcm1hdHRlclBhcmFtcyk6IHN0cmluZyA9PlxuICAgIGxvY2FsZSA9PT0gJ2l0JyA/IGZvcm1hdERhdGUoZGF0ZSwgJ0hIOm1tJywgbG9jYWxlKSA6IGZvcm1hdERhdGUoZGF0ZSwgJ2ggYWEnLCBsb2NhbGUpO1xuICB3ZWVrVmlld0NvbHVtbkhlYWRlciA9ICh7IGRhdGUsIGxvY2FsZSB9OiBEYXRlRm9ybWF0dGVyUGFyYW1zKTogc3RyaW5nID0+IGZvcm1hdERhdGUoZGF0ZSwgJ0VFRScsIGxvY2FsZSk7XG4gIHdlZWtWaWV3VGl0bGUgPSAoeyBkYXRlLCBsb2NhbGUgfTogRGF0ZUZvcm1hdHRlclBhcmFtcyk6IHN0cmluZyA9PiBmb3JtYXREYXRlKGRhdGUsICdNTU1NIHl5eXknLCBsb2NhbGUpO1xuXG4gIC8vIERBWSBWSUVXXG4gIGRheVZpZXdIb3VyID0gKHsgZGF0ZSwgbG9jYWxlIH06IERhdGVGb3JtYXR0ZXJQYXJhbXMpOiBzdHJpbmcgPT5cbiAgICBsb2NhbGUgPT09ICdpdCcgPyBmb3JtYXREYXRlKGRhdGUsICdISDptbScsIGxvY2FsZSkgOiBmb3JtYXREYXRlKGRhdGUsICdoIGFhJywgbG9jYWxlKTtcbiAgZGF5Vmlld1RpdGxlID0gKHsgZGF0ZSwgbG9jYWxlIH06IERhdGVGb3JtYXR0ZXJQYXJhbXMpOiBzdHJpbmcgPT5cbiAgICBsb2NhbGUgPT09ICdpdCcgPyBmb3JtYXREYXRlKGRhdGUsICdFRUVFLCBkZCBNTU0geXl5eScsIGxvY2FsZSkgOiBmb3JtYXREYXRlKGRhdGUsICdFRUVFLCBNTU0gZGQsIHl5eXknLCBsb2NhbGUpO1xufVxuIl19
|
|
@@ -11,8 +11,8 @@ import { CalendarDateFormatter, CalendarView, CalendarModule, DateAdapter } from
|
|
|
11
11
|
import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
|
|
12
12
|
import * as i3 from '@idea-ionic/common';
|
|
13
13
|
import { IDEASuggestionsComponent, IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule, IDEAUserAvatarModule } from '@idea-ionic/common';
|
|
14
|
-
import { Subject } from 'rxjs';
|
|
15
|
-
import { isFuture, isToday, isSameDay } from 'date-fns';
|
|
14
|
+
import { Subject, fromEvent, finalize, takeUntil } from 'rxjs';
|
|
15
|
+
import { isFuture, isToday, isSameDay, endOfWeek, addMinutes, addDays } from 'date-fns';
|
|
16
16
|
import ColorParse from 'color-parse';
|
|
17
17
|
import { __awaiter } from 'tslib';
|
|
18
18
|
import { ExternalCalendarSources, Calendar, Suggestion, Check, ExternalCalendarInfo } from 'idea-toolbox';
|
|
@@ -20,31 +20,18 @@ import { Browser } from '@capacitor/browser';
|
|
|
20
20
|
import { environment } from '@env';
|
|
21
21
|
|
|
22
22
|
class CustomDateFormatter extends CalendarDateFormatter {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return formatDate(date, 'EEE', locale);
|
|
36
|
-
}
|
|
37
|
-
weekViewTitle({ date, locale }) {
|
|
38
|
-
return formatDate(date, 'MMMM yyyy', locale);
|
|
39
|
-
}
|
|
40
|
-
// DAY VIEW
|
|
41
|
-
dayViewHour({ date, locale }) {
|
|
42
|
-
return locale === 'it' ? formatDate(date, 'HH:mm', locale) : formatDate(date, 'h aa', locale);
|
|
43
|
-
}
|
|
44
|
-
dayViewTitle({ date, locale }) {
|
|
45
|
-
return locale === 'it'
|
|
46
|
-
? formatDate(date, 'EEEE, dd MMM yyyy', locale)
|
|
47
|
-
: formatDate(date, 'EEEE, MMM dd, yyyy', locale);
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
// MONTH VIEW
|
|
26
|
+
this.monthViewColumnHeader = ({ date, locale }) => formatDate(date, 'EEE', locale);
|
|
27
|
+
this.monthViewTitle = ({ date, locale }) => formatDate(date, 'MMMM y', locale);
|
|
28
|
+
// WEEK VIEW
|
|
29
|
+
this.weekViewHour = ({ date, locale }) => locale === 'it' ? formatDate(date, 'HH:mm', locale) : formatDate(date, 'h aa', locale);
|
|
30
|
+
this.weekViewColumnHeader = ({ date, locale }) => formatDate(date, 'EEE', locale);
|
|
31
|
+
this.weekViewTitle = ({ date, locale }) => formatDate(date, 'MMMM yyyy', locale);
|
|
32
|
+
// DAY VIEW
|
|
33
|
+
this.dayViewHour = ({ date, locale }) => locale === 'it' ? formatDate(date, 'HH:mm', locale) : formatDate(date, 'h aa', locale);
|
|
34
|
+
this.dayViewTitle = ({ date, locale }) => locale === 'it' ? formatDate(date, 'EEEE, dd MMM yyyy', locale) : formatDate(date, 'EEEE, MMM dd, yyyy', locale);
|
|
48
35
|
}
|
|
49
36
|
}
|
|
50
37
|
CustomDateFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CustomDateFormatter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -54,9 +41,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
54
41
|
}] });
|
|
55
42
|
|
|
56
43
|
class IDEAAgendaComponent {
|
|
57
|
-
constructor(
|
|
44
|
+
constructor(cdr, platform, t) {
|
|
45
|
+
this.cdr = cdr;
|
|
58
46
|
this.platform = platform;
|
|
59
|
-
this.tc = tc;
|
|
60
47
|
this.t = t;
|
|
61
48
|
/**
|
|
62
49
|
* The events to display in the calendar.
|
|
@@ -86,10 +73,23 @@ class IDEAAgendaComponent {
|
|
|
86
73
|
* The view mode for the agenda.
|
|
87
74
|
*/
|
|
88
75
|
this.view = CalendarView.Week;
|
|
76
|
+
/**
|
|
77
|
+
* The allowed view mode for the agenda.
|
|
78
|
+
*/
|
|
79
|
+
this.allowedViews = [CalendarView.Day, CalendarView.Week, CalendarView.Month];
|
|
89
80
|
/**
|
|
90
81
|
* Whether to block any day/slot in the past.
|
|
91
82
|
*/
|
|
92
83
|
this.onlyFuture = false;
|
|
84
|
+
/**
|
|
85
|
+
* The template for new events created by drag&drop.
|
|
86
|
+
*/
|
|
87
|
+
this.newEventTemplate = { title: 'New', start: null, meta: {} };
|
|
88
|
+
/**
|
|
89
|
+
* Whether (and how) to allow the creation of events by drag&drop.
|
|
90
|
+
* If enabled, on mobile it requires the `parentContent` to be set for a correct execution.
|
|
91
|
+
*/
|
|
92
|
+
this.allowDragToCreate = DragToCreateOptions.DISABLED;
|
|
93
93
|
/**
|
|
94
94
|
* Trigger when an event is selected.
|
|
95
95
|
*/
|
|
@@ -102,6 +102,10 @@ class IDEAAgendaComponent {
|
|
|
102
102
|
* Trigger when a time slot is selected.
|
|
103
103
|
*/
|
|
104
104
|
this.selectSlot = new EventEmitter();
|
|
105
|
+
/**
|
|
106
|
+
* Trigger when a new event is added by drag and drop.
|
|
107
|
+
*/
|
|
108
|
+
this.newEventByDrag = new EventEmitter();
|
|
105
109
|
/**
|
|
106
110
|
* Trigger when an event changed date (drag&drop or resize).
|
|
107
111
|
*/
|
|
@@ -110,6 +114,14 @@ class IDEAAgendaComponent {
|
|
|
110
114
|
* Trigger when the view date of reference changed (because we moved inside the calendar).
|
|
111
115
|
*/
|
|
112
116
|
this.changeDate = new EventEmitter();
|
|
117
|
+
/**
|
|
118
|
+
* Trigger before the rendering of the week or day view.
|
|
119
|
+
*/
|
|
120
|
+
this.beforeWeekOrDayViewRenderEmitter = new EventEmitter();
|
|
121
|
+
/**
|
|
122
|
+
* Trigger before the rendering of the month view.
|
|
123
|
+
*/
|
|
124
|
+
this.beforeMonthViewRenderEmitter = new EventEmitter();
|
|
113
125
|
/**
|
|
114
126
|
* Helper to use the enum in the UX.
|
|
115
127
|
*/
|
|
@@ -122,9 +134,6 @@ class IDEAAgendaComponent {
|
|
|
122
134
|
* A controller to refresh the current view.
|
|
123
135
|
*/
|
|
124
136
|
this.refresh = new Subject();
|
|
125
|
-
/**
|
|
126
|
-
* Helper to use the enum in the UI.
|
|
127
|
-
*/
|
|
128
137
|
this.Attendance = EventAttendance;
|
|
129
138
|
this.darkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
130
139
|
}
|
|
@@ -133,23 +142,38 @@ class IDEAAgendaComponent {
|
|
|
133
142
|
// in case of Italian locale the starting day for the week is monday (1), otherwise sunday (0)
|
|
134
143
|
this.weekStartsOn = this.locale === 'it' ? 1 : 0;
|
|
135
144
|
}
|
|
145
|
+
isMobile() {
|
|
146
|
+
return this.platform.is('mobile');
|
|
147
|
+
}
|
|
136
148
|
/**
|
|
137
149
|
* Run some checks before the month view is rendered (e.g. disable invalid days).
|
|
138
150
|
*/
|
|
139
|
-
beforeMonthViewRender(
|
|
151
|
+
beforeMonthViewRender(event) {
|
|
152
|
+
this.beforeMonthViewRenderEmitter.emit(event);
|
|
153
|
+
const { body } = event;
|
|
140
154
|
body.forEach(day => {
|
|
141
|
-
if (!this.dateIsValid(day.date
|
|
155
|
+
if (!this.dateIsValid(day.date))
|
|
142
156
|
day.cssClass = 'cal-disabled';
|
|
143
157
|
});
|
|
144
158
|
}
|
|
145
159
|
/**
|
|
146
160
|
* Run some checks before the week/day view is rendered (e.g. disable invalid days).
|
|
147
161
|
*/
|
|
148
|
-
beforeWeekOrDayViewRender(
|
|
149
|
-
|
|
150
|
-
|
|
162
|
+
beforeWeekOrDayViewRender(event) {
|
|
163
|
+
this.beforeWeekOrDayViewRenderEmitter.emit(event);
|
|
164
|
+
const { header, hourColumns } = event;
|
|
165
|
+
header.forEach(day => {
|
|
166
|
+
if (!this.dateIsValid(day.date))
|
|
151
167
|
day.cssClass = 'cal-disabled';
|
|
152
168
|
});
|
|
169
|
+
hourColumns.forEach(hourCol => {
|
|
170
|
+
hourCol.hours.forEach(hour => {
|
|
171
|
+
hour.segments.forEach(segment => {
|
|
172
|
+
if (!this.dateIsValid(segment.date))
|
|
173
|
+
segment.cssClass = 'cal-disabled';
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
});
|
|
153
177
|
}
|
|
154
178
|
/**
|
|
155
179
|
* Check whether a date is valid based on the configured parameters.
|
|
@@ -204,7 +228,9 @@ class IDEAAgendaComponent {
|
|
|
204
228
|
* Given a color, it returns an opaque version of it.
|
|
205
229
|
*/
|
|
206
230
|
getAlternateColor(color, amount, opacity) {
|
|
207
|
-
|
|
231
|
+
if (!(color === null || color === void 0 ? void 0 : color.trim()))
|
|
232
|
+
return undefined;
|
|
233
|
+
const alt = ColorParse(color.trim());
|
|
208
234
|
const r = Math.max(Math.min(255, Number(alt.values[0]) + amount), 0);
|
|
209
235
|
const g = Math.max(Math.min(255, Number(alt.values[1]) + amount), 0);
|
|
210
236
|
const b = Math.max(Math.min(255, Number(alt.values[2]) + amount), 0);
|
|
@@ -233,13 +259,68 @@ class IDEAAgendaComponent {
|
|
|
233
259
|
getPreviewDescription(description) {
|
|
234
260
|
return description && description.length > 100 ? description.slice(0, 100).concat('...') : description;
|
|
235
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Handle the drag&drop to create a new event.
|
|
264
|
+
*/
|
|
265
|
+
startDragToCreate(event, segmentDate, segmentElement) {
|
|
266
|
+
if (!this.allowDragToCreate)
|
|
267
|
+
return;
|
|
268
|
+
if (this.parentContent)
|
|
269
|
+
this.parentContent.scrollY = false;
|
|
270
|
+
const eventByDragAndDrop = Object.assign(Object.assign({}, this.newEventTemplate), { start: segmentDate });
|
|
271
|
+
this.events = [...this.events, eventByDragAndDrop];
|
|
272
|
+
const segmentPosition = segmentElement.getBoundingClientRect();
|
|
273
|
+
const endOfView = endOfWeek(this.viewDate, { weekStartsOn: this.weekStartsOn });
|
|
274
|
+
const whileDragging = (draggingEvent) => {
|
|
275
|
+
const { clientY, clientX } = draggingEvent.type === 'touchmove' ? draggingEvent.touches[0] : draggingEvent;
|
|
276
|
+
const minutesDiff = ceilToNearest(clientY - segmentPosition.top, 30);
|
|
277
|
+
const daysDiff = floorToNearest(clientX - segmentPosition.left, segmentPosition.width) / segmentPosition.width;
|
|
278
|
+
let newEnd;
|
|
279
|
+
if (this.allowDragToCreate === DragToCreateOptions.ONLY_SAME_DAY)
|
|
280
|
+
newEnd = addMinutes(segmentDate, minutesDiff);
|
|
281
|
+
else
|
|
282
|
+
newEnd = addDays(addMinutes(segmentDate, minutesDiff), daysDiff);
|
|
283
|
+
if (newEnd > segmentDate && newEnd < endOfView)
|
|
284
|
+
eventByDragAndDrop.end = newEnd;
|
|
285
|
+
refreshView();
|
|
286
|
+
};
|
|
287
|
+
const endOfDrag = () => {
|
|
288
|
+
if (this.parentContent)
|
|
289
|
+
this.parentContent.scrollY = true;
|
|
290
|
+
eventByDragAndDrop.end = this.getFixedEndDateWithMinimumSegmentDuration(eventByDragAndDrop);
|
|
291
|
+
refreshView();
|
|
292
|
+
this.newEventByDrag.emit(eventByDragAndDrop);
|
|
293
|
+
};
|
|
294
|
+
const refreshView = () => {
|
|
295
|
+
this.events = [...this.events];
|
|
296
|
+
this.cdr.detectChanges();
|
|
297
|
+
};
|
|
298
|
+
if (event.type === 'touchstart') {
|
|
299
|
+
fromEvent(document, 'touchmove')
|
|
300
|
+
.pipe(finalize(endOfDrag), takeUntil(fromEvent(document, 'touchend')))
|
|
301
|
+
.subscribe(whileDragging);
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
fromEvent(document, 'mousemove')
|
|
305
|
+
.pipe(finalize(endOfDrag), takeUntil(fromEvent(document, 'mouseup')))
|
|
306
|
+
.subscribe(whileDragging);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
getFixedEndDateWithMinimumSegmentDuration(agendaBooking) {
|
|
310
|
+
var _a;
|
|
311
|
+
const fixedEnd = new Date((_a = agendaBooking.end) !== null && _a !== void 0 ? _a : agendaBooking.start);
|
|
312
|
+
const segmentSizeInMinutes = 60 / this.hourSegments;
|
|
313
|
+
if (fixedEnd.getTime() <= agendaBooking.start.getTime() + segmentSizeInMinutes * 60 * 1000)
|
|
314
|
+
fixedEnd.setMinutes(agendaBooking.start.getMinutes() + segmentSizeInMinutes);
|
|
315
|
+
return fixedEnd;
|
|
316
|
+
}
|
|
236
317
|
}
|
|
237
|
-
IDEAAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEAAgendaComponent, deps: [{ token:
|
|
238
|
-
IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", onlyFuture: "onlyFuture" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", changeEvent: "changeEvent", changeDate: "changeDate" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { kind: "component", type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "component", type: i3.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { kind: "component", type: i4.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { kind: "component", type: i4.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { kind: "directive", type: i4.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { kind: "directive", type: i4.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { kind: "directive", type: i4.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { kind: "component", type: i4.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: i4.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "component", type: i4.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i4.ɵCalendarDatePipe, name: "calendarDate" }, { kind: "pipe", type: i4.ɵCalendarEventTitlePipe, name: "calendarEventTitle" }, { kind: "pipe", type: i4.ɵCalendarA11yPipe, name: "calendarA11y" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
318
|
+
IDEAAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEAAgendaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.Platform }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
319
|
+
IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", allowedViews: "allowedViews", onlyFuture: "onlyFuture", titleNotes: "titleNotes", newEventTemplate: "newEventTemplate", allowDragToCreate: "allowDragToCreate", parentContent: "parentContent" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", newEventByDrag: "newEventByDrag", changeEvent: "changeEvent", changeDate: "changeDate", beforeWeekOrDayViewRenderEmitter: "beforeWeekOrDayViewRenderEmitter", beforeMonthViewRenderEmitter: "beforeMonthViewRenderEmitter" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\" *ngIf=\"allowedViews.length > 1\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option *ngFor=\"let view of allowedViews\" [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate : view + 'ViewTitle' : locale }}</h2>\n <p *ngIf=\"titleNotes\">{{ titleNotes }}</p>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle : view : event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"></mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{ segment.date | calendarDate : 'weekViewHour' : locale }}\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { kind: "component", type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "component", type: i3.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { kind: "component", type: i4.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { kind: "component", type: i4.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { kind: "directive", type: i4.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { kind: "directive", type: i4.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { kind: "directive", type: i4.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { kind: "component", type: i4.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: i4.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "component", type: i4.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "pipe", type: i3$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i4.ɵCalendarDatePipe, name: "calendarDate" }, { kind: "pipe", type: i4.ɵCalendarEventTitlePipe, name: "calendarEventTitle" }, { kind: "pipe", type: i4.ɵCalendarA11yPipe, name: "calendarA11y" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
239
320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
|
|
240
321
|
type: Component,
|
|
241
|
-
args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option
|
|
242
|
-
}], ctorParameters: function () { return [{ type:
|
|
322
|
+
args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\" *ngIf=\"allowedViews.length > 1\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option *ngFor=\"let view of allowedViews\" [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate : view + 'ViewTitle' : locale }}</h2>\n <p *ngIf=\"titleNotes\">{{ titleNotes }}</p>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle : view : event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"></mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{ segment.date | calendarDate : 'weekViewHour' : locale }}\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"] }]
|
|
323
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2.Platform }, { type: i3.IDEATranslationsService }]; }, propDecorators: { events: [{
|
|
243
324
|
type: Input
|
|
244
325
|
}], excludeDays: [{
|
|
245
326
|
type: Input
|
|
@@ -253,18 +334,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
253
334
|
type: Input
|
|
254
335
|
}], view: [{
|
|
255
336
|
type: Input
|
|
337
|
+
}], allowedViews: [{
|
|
338
|
+
type: Input
|
|
256
339
|
}], onlyFuture: [{
|
|
257
340
|
type: Input
|
|
341
|
+
}], titleNotes: [{
|
|
342
|
+
type: Input
|
|
343
|
+
}], newEventTemplate: [{
|
|
344
|
+
type: Input
|
|
345
|
+
}], allowDragToCreate: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], parentContent: [{
|
|
348
|
+
type: Input
|
|
258
349
|
}], selectEvent: [{
|
|
259
350
|
type: Output
|
|
260
351
|
}], selectDay: [{
|
|
261
352
|
type: Output
|
|
262
353
|
}], selectSlot: [{
|
|
263
354
|
type: Output
|
|
355
|
+
}], newEventByDrag: [{
|
|
356
|
+
type: Output
|
|
264
357
|
}], changeEvent: [{
|
|
265
358
|
type: Output
|
|
266
359
|
}], changeDate: [{
|
|
267
360
|
type: Output
|
|
361
|
+
}], beforeWeekOrDayViewRenderEmitter: [{
|
|
362
|
+
type: Output
|
|
363
|
+
}], beforeMonthViewRenderEmitter: [{
|
|
364
|
+
type: Output
|
|
268
365
|
}] } });
|
|
269
366
|
/**
|
|
270
367
|
* Possible attendance statuses for the event.
|
|
@@ -276,6 +373,17 @@ var EventAttendance;
|
|
|
276
373
|
EventAttendance[EventAttendance["TENTATIVE"] = 1] = "TENTATIVE";
|
|
277
374
|
EventAttendance[EventAttendance["ACCEPTED"] = 2] = "ACCEPTED";
|
|
278
375
|
})(EventAttendance || (EventAttendance = {}));
|
|
376
|
+
/**
|
|
377
|
+
* The options to allow (or not) drag&drop to create a new event.
|
|
378
|
+
*/
|
|
379
|
+
var DragToCreateOptions;
|
|
380
|
+
(function (DragToCreateOptions) {
|
|
381
|
+
DragToCreateOptions[DragToCreateOptions["DISABLED"] = 0] = "DISABLED";
|
|
382
|
+
DragToCreateOptions[DragToCreateOptions["ONLY_SAME_DAY"] = 1] = "ONLY_SAME_DAY";
|
|
383
|
+
DragToCreateOptions[DragToCreateOptions["FREE"] = 2] = "FREE";
|
|
384
|
+
})(DragToCreateOptions || (DragToCreateOptions = {}));
|
|
385
|
+
const floorToNearest = (amount, precision) => Math.floor(amount / precision) * precision;
|
|
386
|
+
const ceilToNearest = (amount, precision) => Math.ceil(amount / precision) * precision;
|
|
279
387
|
|
|
280
388
|
/**
|
|
281
389
|
* Note: to test locally, you need to temporarily change the redirect URI:
|
|
@@ -951,6 +1059,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
951
1059
|
* Generated bundle index. Do not edit.
|
|
952
1060
|
*/
|
|
953
1061
|
|
|
954
|
-
export { CalendarScopes, CustomDateFormatter, EventAttendance, IDEAAgendaComponent, IDEAAgendaModule, IDEACalendarComponent, IDEACalendarCreationComponent, IDEACalendarItemComponent, IDEACalendarsService };
|
|
955
|
-
//# sourceMappingURL=idea-ionic-agenda.mjs.map
|
|
1062
|
+
export { CalendarScopes, CustomDateFormatter, DragToCreateOptions, EventAttendance, IDEAAgendaComponent, IDEAAgendaModule, IDEACalendarComponent, IDEACalendarCreationComponent, IDEACalendarItemComponent, IDEACalendarsService };
|
|
956
1063
|
//# sourceMappingURL=idea-ionic-agenda.mjs.map
|