@syncfusion/ej2-schedule 20.1.59 → 20.2.38
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/CHANGELOG.md +35 -0
- package/dist/ej2-schedule.umd.min.js +2 -2
- package/dist/ej2-schedule.umd.min.js.map +1 -1
- package/dist/es6/ej2-schedule.es2015.js +250 -68
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +254 -67
- package/dist/es6/ej2-schedule.es5.js.map +1 -1
- package/dist/global/ej2-schedule.min.js +2 -2
- package/dist/global/ej2-schedule.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/helpers/e2e/index.js +9 -7
- package/helpers/e2e/recurrence-editor.js +41 -25
- package/helpers/e2e/schedule.js +44 -28
- package/package.json +15 -15
- package/src/recurrence-editor/recurrence-editor.js +4 -1
- package/src/schedule/actions/action-base.d.ts +1 -0
- package/src/schedule/actions/action-base.js +3 -2
- package/src/schedule/actions/crud.js +9 -7
- package/src/schedule/actions/drag.js +1 -1
- package/src/schedule/base/interface.d.ts +6 -0
- package/src/schedule/base/schedule.d.ts +8 -0
- package/src/schedule/base/schedule.js +66 -0
- package/src/schedule/event-renderer/agenda-base.js +6 -6
- package/src/schedule/event-renderer/event-base.d.ts +2 -0
- package/src/schedule/event-renderer/event-base.js +23 -4
- package/src/schedule/event-renderer/month.js +3 -6
- package/src/schedule/event-renderer/vertical-view.js +3 -3
- package/src/schedule/event-renderer/year.js +2 -2
- package/src/schedule/exports/calendar-export.js +1 -1
- package/src/schedule/exports/calendar-import.js +32 -18
- package/src/schedule/exports/excel-export.js +8 -4
- package/src/schedule/popups/event-window.js +3 -1
- package/src/schedule/popups/quick-popups.js +5 -4
- package/src/schedule/renderer/agenda.js +2 -2
- package/src/schedule/renderer/timeline-month.d.ts +1 -0
- package/src/schedule/renderer/timeline-month.js +9 -0
- package/src/schedule/renderer/timeline-view.d.ts +1 -0
- package/src/schedule/renderer/timeline-view.js +14 -0
- package/src/schedule/renderer/timeline-year.js +3 -0
- package/src/schedule/renderer/vertical-view.d.ts +2 -0
- package/src/schedule/renderer/vertical-view.js +37 -5
- package/src/schedule/renderer/view-base.d.ts +1 -0
- package/src/schedule/renderer/view-base.js +19 -0
- package/src/schedule/renderer/year.js +2 -1
- package/styles/bootstrap-dark.css +6 -5
- package/styles/bootstrap.css +6 -5
- package/styles/bootstrap4.css +6 -5
- package/styles/bootstrap5-dark.css +5 -3
- package/styles/bootstrap5.css +6 -5
- package/styles/fabric-dark.css +6 -5
- package/styles/fabric.css +6 -5
- package/styles/fluent-dark.css +20 -18
- package/styles/fluent.css +8 -7
- package/styles/highcontrast-light.css +6 -5
- package/styles/highcontrast.css +6 -5
- package/styles/material-dark.css +6 -5
- package/styles/material.css +6 -5
- package/styles/recurrence-editor/_fusionnew-definition.scss +15 -0
- package/styles/recurrence-editor/_material3-definition.scss +15 -0
- package/styles/schedule/_fluent-definition.scss +1 -1
- package/styles/schedule/_fusionnew-definition.scss +224 -0
- package/styles/schedule/_layout.scss +6 -2
- package/styles/schedule/_material3-definition.scss +224 -0
- package/styles/schedule/bootstrap-dark.css +6 -5
- package/styles/schedule/bootstrap.css +6 -5
- package/styles/schedule/bootstrap4.css +6 -5
- package/styles/schedule/bootstrap5-dark.css +5 -3
- package/styles/schedule/bootstrap5.css +6 -5
- package/styles/schedule/fabric-dark.css +6 -5
- package/styles/schedule/fabric.css +6 -5
- package/styles/schedule/fluent-dark.css +20 -18
- package/styles/schedule/fluent.css +8 -7
- package/styles/schedule/highcontrast-light.css +6 -5
- package/styles/schedule/highcontrast.css +6 -5
- package/styles/schedule/icons/_fusionnew.scss +232 -0
- package/styles/schedule/icons/_material3.scss +232 -0
- package/styles/schedule/material-dark.css +6 -5
- package/styles/schedule/material.css +6 -5
- package/styles/schedule/tailwind-dark.css +5 -3
- package/styles/schedule/tailwind.css +6 -5
- package/styles/tailwind-dark.css +5 -3
- package/styles/tailwind.css +6 -5
|
@@ -84,7 +84,7 @@ var YearEvent = /** @class */ (function (_super) {
|
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
86
|
YearEvent.prototype.timelineYearViewEvents = function () {
|
|
87
|
-
var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);
|
|
87
|
+
var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')');
|
|
88
88
|
this.cellWidth = workCell.offsetWidth;
|
|
89
89
|
this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS));
|
|
90
90
|
var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
|
|
@@ -369,7 +369,7 @@ var YearEvent = /** @class */ (function (_super) {
|
|
|
369
369
|
'data-id': 'Appointment_' + record[this.fields.id],
|
|
370
370
|
'data-guid': record.Guid,
|
|
371
371
|
'role': 'button', 'tabindex': '0',
|
|
372
|
-
'aria-
|
|
372
|
+
'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false', 'aria-grabbed': 'true',
|
|
373
373
|
'aria-label': this.parent.getAnnouncementString(record)
|
|
374
374
|
}
|
|
375
375
|
});
|
|
@@ -19,7 +19,7 @@ var ICalendarExport = /** @class */ (function () {
|
|
|
19
19
|
var timeZone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();
|
|
20
20
|
var fields = this.parent.eventFields;
|
|
21
21
|
eventsData.forEach(function (eventObj) {
|
|
22
|
-
var uId = _this.parent.eventBase.generateGuid();
|
|
22
|
+
var uId = eventObj[fields.id] || eventObj.Guid || _this.parent.eventBase.generateGuid();
|
|
23
23
|
var editedExDate = [];
|
|
24
24
|
if (eventObj[fields.recurrenceID]) {
|
|
25
25
|
var filter = _this.filterEvents(filterCollection, fields.id, eventObj[fields.recurrenceID]);
|
|
@@ -78,8 +78,16 @@ var ICalendarImport = /** @class */ (function () {
|
|
|
78
78
|
break;
|
|
79
79
|
case 'UID':
|
|
80
80
|
curEvent[uId] = value;
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
if (typeof (id) == 'number') {
|
|
82
|
+
curEvent[fields.id] = parseInt(value, 10);
|
|
83
|
+
if (isNaN(curEvent[fields.id])) {
|
|
84
|
+
curEvent[fields.id] = id + count;
|
|
85
|
+
count++;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
curEvent[fields.id] = value;
|
|
90
|
+
}
|
|
83
91
|
break;
|
|
84
92
|
case 'SUMMARY':
|
|
85
93
|
curEvent[fields.subject] = value;
|
|
@@ -115,6 +123,10 @@ var ICalendarImport = /** @class */ (function () {
|
|
|
115
123
|
var appoint = [];
|
|
116
124
|
var uId = 'UID';
|
|
117
125
|
var fields = this.parent.eventFields;
|
|
126
|
+
var appointmentIds = [];
|
|
127
|
+
this.parent.eventsData.forEach(function (eventObj) {
|
|
128
|
+
appointmentIds.push(eventObj[fields.id]);
|
|
129
|
+
});
|
|
118
130
|
app.forEach(function (eventObj) {
|
|
119
131
|
var parentObj;
|
|
120
132
|
var id;
|
|
@@ -123,24 +135,26 @@ var ICalendarImport = /** @class */ (function () {
|
|
|
123
135
|
parentObj = eventObj;
|
|
124
136
|
id = eventObj[fields.id];
|
|
125
137
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
if (appointmentIds.indexOf(eventObj[fields.id]) < 0) {
|
|
139
|
+
var data = app.filter(function (data) { return data.UID === eventObj[uId]; });
|
|
140
|
+
if (data.length > 1 && isNullOrUndefined(eventObj[fields.recurrenceID])) {
|
|
141
|
+
for (var i = 0; i < data.length; i++) {
|
|
142
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
143
|
+
if (data[i].hasOwnProperty(fields.recurrenceID)) {
|
|
144
|
+
var exdate = data[i][fields.recurrenceID];
|
|
145
|
+
data[i][fields.recurrenceID] = id;
|
|
146
|
+
data[i][fields.recurrenceException] = null;
|
|
147
|
+
parentObj[fields.recurrenceException] = (isNullOrUndefined(parentObj[fields.recurrenceException])) ?
|
|
148
|
+
exdate : parentObj[fields.recurrenceException] + ',' + exdate;
|
|
149
|
+
appoint.push(data[i]);
|
|
150
|
+
}
|
|
137
151
|
}
|
|
152
|
+
appoint.push(parentObj);
|
|
153
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
154
|
+
}
|
|
155
|
+
else if (!eventObj.hasOwnProperty(fields.recurrenceID)) {
|
|
156
|
+
appoint.push(eventObj);
|
|
138
157
|
}
|
|
139
|
-
appoint.push(parentObj);
|
|
140
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
141
|
-
}
|
|
142
|
-
else if (!eventObj.hasOwnProperty(fields.recurrenceID)) {
|
|
143
|
-
appoint.push(eventObj);
|
|
144
158
|
}
|
|
145
159
|
});
|
|
146
160
|
return appoint;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Workbook } from '@syncfusion/ej2-excel-export';
|
|
3
|
-
import { extend } from '@syncfusion/ej2-base';
|
|
3
|
+
import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';
|
|
4
4
|
/**
|
|
5
5
|
* Excel Export Module
|
|
6
6
|
*/
|
|
@@ -14,6 +14,10 @@ var ExcelExport = /** @class */ (function () {
|
|
|
14
14
|
var exportName = excelExportOptions.fileName || 'Schedule';
|
|
15
15
|
var exportType = excelExportOptions.exportType || 'xlsx';
|
|
16
16
|
var isIncludeOccurrences = excelExportOptions.includeOccurrences || false;
|
|
17
|
+
var separator;
|
|
18
|
+
if (!isNullOrUndefined(excelExportOptions.separator) && excelExportOptions.separator !== ',') {
|
|
19
|
+
separator = excelExportOptions.separator;
|
|
20
|
+
}
|
|
17
21
|
var eventCollection;
|
|
18
22
|
if (excelExportOptions.customData) {
|
|
19
23
|
eventCollection = !isIncludeOccurrences ? excelExportOptions.customData :
|
|
@@ -22,9 +26,9 @@ var ExcelExport = /** @class */ (function () {
|
|
|
22
26
|
else {
|
|
23
27
|
eventCollection = !isIncludeOccurrences ? this.parent.eventsData : this.parent.eventsProcessed;
|
|
24
28
|
}
|
|
25
|
-
this.processWorkbook(exportColumns, exportName, exportType, eventCollection);
|
|
29
|
+
this.processWorkbook(exportColumns, exportName, exportType, eventCollection, separator);
|
|
26
30
|
};
|
|
27
|
-
ExcelExport.prototype.processWorkbook = function (fields, name, type, eventCollection) {
|
|
31
|
+
ExcelExport.prototype.processWorkbook = function (fields, name, type, eventCollection, separator) {
|
|
28
32
|
var _this = this;
|
|
29
33
|
var columns = [];
|
|
30
34
|
var rows = [];
|
|
@@ -46,7 +50,7 @@ var ExcelExport = /** @class */ (function () {
|
|
|
46
50
|
rows.push({ index: i + 2, cells: columnData });
|
|
47
51
|
});
|
|
48
52
|
var workSheet = [{ columns: columns, rows: rows }];
|
|
49
|
-
var book = new Workbook({ worksheets: workSheet }, type, this.parent.locale);
|
|
53
|
+
var book = new Workbook({ worksheets: workSheet }, type, this.parent.locale, undefined, separator);
|
|
50
54
|
book.save(name + '.' + type);
|
|
51
55
|
};
|
|
52
56
|
ExcelExport.prototype.getExportColumns = function (exportOptions) {
|
|
@@ -154,6 +154,7 @@ var EventWindow = /** @class */ (function () {
|
|
|
154
154
|
EventWindow.prototype.setDialogContent = function () {
|
|
155
155
|
this.dialogObject.content = this.getEventWindowContent();
|
|
156
156
|
this.dialogObject.dataBind();
|
|
157
|
+
this.applyFormValidation();
|
|
157
158
|
};
|
|
158
159
|
EventWindow.prototype.preventEventSave = function (e) {
|
|
159
160
|
if (this.parent && !this.parent.allowKeyboardInteraction && e.code === 'Enter') {
|
|
@@ -415,6 +416,7 @@ var EventWindow = /** @class */ (function () {
|
|
|
415
416
|
resourceData.colorField + '}"></div><div class="e-resource-text">${' + resourceData.textField + '}</div></div>';
|
|
416
417
|
if (resourceData.allowMultiple) {
|
|
417
418
|
var listObj = new MultiSelect({
|
|
419
|
+
enableRtl: this.parent.enableRtl,
|
|
418
420
|
cssClass: this.parent.cssClass || '',
|
|
419
421
|
dataSource: resourceData.dataSource,
|
|
420
422
|
change: this.onMultiselectResourceChange.bind(this),
|
|
@@ -473,7 +475,7 @@ var EventWindow = /** @class */ (function () {
|
|
|
473
475
|
query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;
|
|
474
476
|
e.updateData(_this.parent.timezoneDataSource, query);
|
|
475
477
|
},
|
|
476
|
-
htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName },
|
|
478
|
+
htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName, role: 'option' },
|
|
477
479
|
floatLabelType: 'Always',
|
|
478
480
|
placeholder: this.getFieldLabel(value),
|
|
479
481
|
popupHeight: '230px'
|
|
@@ -318,8 +318,8 @@ var QuickPopups = /** @class */ (function () {
|
|
|
318
318
|
attrs: {
|
|
319
319
|
'data-id': '' + eventData[fields.id],
|
|
320
320
|
'data-guid': eventData.Guid, 'role': 'button', 'tabindex': '0',
|
|
321
|
-
'aria-
|
|
322
|
-
'aria-
|
|
321
|
+
'aria-disabled': this_1.parent.eventBase.getReadonlyAttribute(eventData),
|
|
322
|
+
'aria-pressed': 'false', 'aria-grabbed': 'true', 'aria-label': this_1.parent.getAnnouncementString(eventData)
|
|
323
323
|
}
|
|
324
324
|
});
|
|
325
325
|
var templateElement = void 0;
|
|
@@ -415,7 +415,7 @@ var QuickPopups = /** @class */ (function () {
|
|
|
415
415
|
this.quickPopupHide();
|
|
416
416
|
return;
|
|
417
417
|
}
|
|
418
|
-
var targetEle = args.event.target;
|
|
418
|
+
var targetEle = !isNullOrUndefined(args.event) ? args.event.target : args.element;
|
|
419
419
|
if (this.parent.isAdaptive) {
|
|
420
420
|
this.quickPopupHide();
|
|
421
421
|
var newEventClone = this.parent.element.querySelector('.' + cls.NEW_EVENT_CLASS);
|
|
@@ -511,6 +511,7 @@ var QuickPopups = /** @class */ (function () {
|
|
|
511
511
|
}
|
|
512
512
|
else {
|
|
513
513
|
var isSameTarget = this.isSameEventClick(events);
|
|
514
|
+
this.parent.selectedElements = [];
|
|
514
515
|
if (isSameTarget) {
|
|
515
516
|
return;
|
|
516
517
|
}
|
|
@@ -576,7 +577,7 @@ var QuickPopups = /** @class */ (function () {
|
|
|
576
577
|
("<button class=\"" + (cls.DELETE_CLASS + ' ' + cls.ICON) + "\" title=\"" + this.l10n.getConstant('delete') + "\"></button>") +
|
|
577
578
|
("<button class=\"" + cls.CLOSE_CLASS + "\" title=\"" + this.l10n.getConstant('close') + "\"></button></div>") +
|
|
578
579
|
("<div class=\"" + cls.SUBJECT_WRAP + "\"><div class=\"" + cls.SUBJECT_CLASS + " " + cls.TEXT_ELLIPSIS + "\" ") +
|
|
579
|
-
("title=\"" + args.eventSubject + "\">" + args.eventSubject + "</div></div >");
|
|
580
|
+
("title=\"" + (args.eventSubject ? args.eventSubject.replaceAll('"', '\'') : args.eventSubject) + "\">" + args.eventSubject + "</div></div >");
|
|
580
581
|
break;
|
|
581
582
|
}
|
|
582
583
|
var templateWrapper = createElement('div', { innerHTML: header });
|
|
@@ -171,7 +171,7 @@ var Agenda = /** @class */ (function (_super) {
|
|
|
171
171
|
for (var day = 0; day < this.parent.agendaDaysCount; day++) {
|
|
172
172
|
var filterData = this.appointmentFiltering(agendaDate);
|
|
173
173
|
var nTr = this.createTableRowElement(agendaDate, 'data');
|
|
174
|
-
if (this.element.querySelector('tr[
|
|
174
|
+
if (this.element.querySelector('tr[data-row-index="' + parseInt(nTr.getAttribute('data-row-index'), 10) + '"]')) {
|
|
175
175
|
agendaDate = util.addDays(agendaDate, 1);
|
|
176
176
|
continue;
|
|
177
177
|
}
|
|
@@ -235,7 +235,7 @@ var Agenda = /** @class */ (function (_super) {
|
|
|
235
235
|
prepend([].slice.call(emptyTBody.childNodes), tBody);
|
|
236
236
|
this.wireEventActions();
|
|
237
237
|
for (var s = 0, element = tBody.children; s < element.length; s++) {
|
|
238
|
-
if (element[s].getAttribute('
|
|
238
|
+
if (element[s].getAttribute('data-row-index') === topElement.getAttribute('data-column-index')) {
|
|
239
239
|
var scrollToValue = element[s].offsetTop -
|
|
240
240
|
this.element.querySelector('.e-agenda-item').offsetHeight;
|
|
241
241
|
target.scrollTop = scrollToValue;
|
|
@@ -150,6 +150,15 @@ var TimelineMonth = /** @class */ (function (_super) {
|
|
|
150
150
|
this.colLevels = colLevels;
|
|
151
151
|
return colLevels;
|
|
152
152
|
};
|
|
153
|
+
TimelineMonth.prototype.getAdjustedDate = function (startTime) {
|
|
154
|
+
var timeSlots = this.colLevels[this.colLevels.length - 1];
|
|
155
|
+
for (var i = 0; i < timeSlots.length; i++) {
|
|
156
|
+
if (timeSlots[i].date.getTime() > startTime.getTime()) {
|
|
157
|
+
return timeSlots[i - 1].date;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
};
|
|
153
162
|
TimelineMonth.prototype.destroy = function () {
|
|
154
163
|
if (!this.parent || this.parent && this.parent.isDestroyed) {
|
|
155
164
|
return;
|
|
@@ -246,6 +246,20 @@ var TimelineViews = /** @class */ (function (_super) {
|
|
|
246
246
|
this.timelineAppointment.renderAppointments();
|
|
247
247
|
this.parent.notify(event.eventsLoaded, {});
|
|
248
248
|
};
|
|
249
|
+
TimelineViews.prototype.getAdjustedDate = function (date) {
|
|
250
|
+
if (!this.parent.activeViewOptions.timeScale.enable) {
|
|
251
|
+
return new Date(date.setHours(0, 0, 0, 0));
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
var timeSlots = this.colLevels[this.colLevels.length - 1];
|
|
255
|
+
for (var i = 0; i < timeSlots.length; i++) {
|
|
256
|
+
if (timeSlots[i].date.getTime() > date.getTime()) {
|
|
257
|
+
return timeSlots[i - 1].date;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
};
|
|
249
263
|
TimelineViews.prototype.destroy = function () {
|
|
250
264
|
if (!this.parent || this.parent && this.parent.isDestroyed) {
|
|
251
265
|
return;
|
|
@@ -271,6 +271,9 @@ var TimelineYear = /** @class */ (function (_super) {
|
|
|
271
271
|
else {
|
|
272
272
|
addClass([td], cls.OTHERMONTH_CLASS);
|
|
273
273
|
}
|
|
274
|
+
if (td.classList.contains(cls.OTHERMONTH_CLASS)) {
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
274
277
|
td.appendChild(dateHeader);
|
|
275
278
|
if (isDateAvail) {
|
|
276
279
|
td.setAttribute('data-date', date.getTime().toString());
|
|
@@ -23,6 +23,7 @@ export declare class VerticalView extends ViewBase implements IRenderer {
|
|
|
23
23
|
setContentHeight(element: HTMLElement, leftPanelElement: HTMLElement, height: number): void;
|
|
24
24
|
scrollToWorkHour(): void;
|
|
25
25
|
scrollToHour(hour: string, scrollDate?: Date): void;
|
|
26
|
+
scrollToDate(scrollDate: Date): void;
|
|
26
27
|
generateColumnLevels(): TdData[][];
|
|
27
28
|
getDateSlots(renderDates: Date[], workDays: number[], workStartHour?: string, workEndHour?: string): TdData[];
|
|
28
29
|
private isWorkHourRange;
|
|
@@ -56,5 +57,6 @@ export declare class VerticalView extends ViewBase implements IRenderer {
|
|
|
56
57
|
getLeftPanelElement(): HTMLElement;
|
|
57
58
|
getEndDateFromStartDate(start: Date): Date;
|
|
58
59
|
getTimeSlotRows(handler?: CallbackFunction): TimeSlotData[];
|
|
60
|
+
getAdjustedDate(startTime: Date): Date;
|
|
59
61
|
destroy(): void;
|
|
60
62
|
}
|
|
@@ -156,11 +156,26 @@ var VerticalView = /** @class */ (function (_super) {
|
|
|
156
156
|
};
|
|
157
157
|
VerticalView.prototype.scrollToHour = function (hour, scrollDate) {
|
|
158
158
|
var date = this.parent.getStartEndTime(hour);
|
|
159
|
-
if (
|
|
159
|
+
if (!isNullOrUndefined(scrollDate)) {
|
|
160
|
+
var headerElement = this.element.querySelector('.' + cls.HEADER_CELLS_CLASS + '[data-date="' + new Date(util.resetTime(scrollDate)).getTime() + '"]');
|
|
161
|
+
if (headerElement) {
|
|
162
|
+
if (this.parent.enableRtl) {
|
|
163
|
+
var conWrap = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);
|
|
164
|
+
this.getScrollableElement().scrollLeft = -(conWrap.offsetWidth - headerElement.offsetLeft - headerElement.offsetWidth);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
this.getScrollableElement().scrollLeft = headerElement.offsetLeft;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (isNullOrUndefined(date)) {
|
|
160
172
|
return;
|
|
161
173
|
}
|
|
162
174
|
this.getScrollableElement().scrollTop = this.getTopFromDateTime(date);
|
|
163
175
|
};
|
|
176
|
+
VerticalView.prototype.scrollToDate = function (scrollDate) {
|
|
177
|
+
this.scrollToHour(null, scrollDate);
|
|
178
|
+
};
|
|
164
179
|
VerticalView.prototype.generateColumnLevels = function () {
|
|
165
180
|
var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);
|
|
166
181
|
var columnLevels = [];
|
|
@@ -499,12 +514,11 @@ var VerticalView = /** @class */ (function (_super) {
|
|
|
499
514
|
var wrap = createElement('div', { className: cls.DATE_HEADER_WRAP_CLASS });
|
|
500
515
|
container.appendChild(wrap);
|
|
501
516
|
var tbl = this.createTableLayout();
|
|
502
|
-
var trEle = createElement('tr');
|
|
517
|
+
var trEle = createElement('tr', { className: cls.HEADER_ROW_CLASS });
|
|
503
518
|
var rowCount = this.colLevels.length;
|
|
504
519
|
var lastLevel = this.colLevels[rowCount - 1];
|
|
505
520
|
for (var i = 0; i < rowCount; i++) {
|
|
506
521
|
var ntr = trEle.cloneNode();
|
|
507
|
-
addClass([ntr], cls.HEADER_ROW_CLASS);
|
|
508
522
|
var level = this.colLevels[i];
|
|
509
523
|
for (var j = 0; j < level.length; j++) {
|
|
510
524
|
ntr.appendChild(this.createTd(level[j]));
|
|
@@ -517,13 +531,13 @@ var VerticalView = /** @class */ (function (_super) {
|
|
|
517
531
|
return container;
|
|
518
532
|
};
|
|
519
533
|
VerticalView.prototype.createAllDayRow = function (table, tdData) {
|
|
520
|
-
var ntr = createElement('tr');
|
|
521
|
-
addClass([ntr], cls.ALLDAY_ROW_CLASS);
|
|
534
|
+
var ntr = createElement('tr', { className: cls.ALLDAY_ROW_CLASS });
|
|
522
535
|
for (var j = 0; j < tdData.length; j++) {
|
|
523
536
|
var td = extend({}, tdData[j]);
|
|
524
537
|
td.className = [cls.ALLDAY_CELLS_CLASS];
|
|
525
538
|
td.type = 'alldayCells';
|
|
526
539
|
var ntd = this.createTd(td);
|
|
540
|
+
ntd.setAttribute('role', 'gridcell');
|
|
527
541
|
ntd.setAttribute('data-date', td.date.getTime().toString());
|
|
528
542
|
if (!isNullOrUndefined(td.groupIndex)) {
|
|
529
543
|
ntd.setAttribute('data-group-index', '' + td.groupIndex);
|
|
@@ -556,6 +570,7 @@ var VerticalView = /** @class */ (function (_super) {
|
|
|
556
570
|
}
|
|
557
571
|
if (td.type === 'dateHeader' && td.className.indexOf(cls.HEADER_CELLS_CLASS) >= 0) {
|
|
558
572
|
tdEle.setAttribute('data-date', td.date.getTime().toString());
|
|
573
|
+
tdEle.setAttribute('role', 'gridcell');
|
|
559
574
|
if (!isNullOrUndefined(td.groupIndex)) {
|
|
560
575
|
tdEle.setAttribute('data-group-index', '' + td.groupIndex);
|
|
561
576
|
}
|
|
@@ -758,6 +773,23 @@ var VerticalView = /** @class */ (function (_super) {
|
|
|
758
773
|
}
|
|
759
774
|
return rows;
|
|
760
775
|
};
|
|
776
|
+
VerticalView.prototype.getAdjustedDate = function (startTime) {
|
|
777
|
+
if (!this.parent.activeViewOptions.timeScale.enable) {
|
|
778
|
+
return new Date(startTime.setHours(0, 0, 0, 0));
|
|
779
|
+
}
|
|
780
|
+
else {
|
|
781
|
+
var timeSlots = this.getTimeSlotRows();
|
|
782
|
+
var startDate = new Date(new Date(timeSlots[0].date.getTime()).
|
|
783
|
+
setHours(startTime.getHours(), startTime.getMinutes(), startTime.getMilliseconds()));
|
|
784
|
+
for (var i = 0; i < timeSlots.length; i++) {
|
|
785
|
+
if (timeSlots[i].date.getTime() > startDate.getTime()) {
|
|
786
|
+
startTime.setHours(timeSlots[i - 1].date.getHours(), timeSlots[i - 1].date.getMinutes(), timeSlots[i - 1].date.getMilliseconds());
|
|
787
|
+
return new Date(startTime);
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
return null;
|
|
792
|
+
};
|
|
761
793
|
VerticalView.prototype.destroy = function () {
|
|
762
794
|
if (!this.parent || this.parent && this.parent.isDestroyed) {
|
|
763
795
|
return;
|
|
@@ -482,6 +482,14 @@ var ViewBase = /** @class */ (function () {
|
|
|
482
482
|
var tdDate = new Date(util.resetTime(new Date(+scrollDate)).getTime()).getTime();
|
|
483
483
|
var dateElement = scrollWrap.querySelector("." + cls.WORK_CELLS_CLASS + "[data-date=\"" + tdDate + "\"]");
|
|
484
484
|
if (this.parent.currentView === 'Month' && dateElement) {
|
|
485
|
+
if (scrollWrap.scrollWidth > scrollWrap.clientWidth) {
|
|
486
|
+
if (!this.parent.enableRtl) {
|
|
487
|
+
scrollWrap.scrollLeft = dateElement.offsetLeft;
|
|
488
|
+
}
|
|
489
|
+
else {
|
|
490
|
+
scrollWrap.scrollLeft = -(this.parent.getContentTable().offsetWidth - dateElement.offsetLeft - dateElement.offsetWidth);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
485
493
|
scrollWrap.scrollTop = dateElement.offsetTop;
|
|
486
494
|
}
|
|
487
495
|
if (this.parent.currentView === 'TimelineMonth' && dateElement) {
|
|
@@ -525,6 +533,17 @@ var ViewBase = /** @class */ (function () {
|
|
|
525
533
|
}
|
|
526
534
|
return endDate;
|
|
527
535
|
};
|
|
536
|
+
ViewBase.prototype.getAdjustedDate = function (startTime) {
|
|
537
|
+
if (!this.parent.activeViewOptions.timeScale.enable || this.parent.currentView === 'Month' ||
|
|
538
|
+
(this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.group.resources.length === 0)) {
|
|
539
|
+
return new Date(startTime.setHours(0, 0, 0, 0));
|
|
540
|
+
}
|
|
541
|
+
else if (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.group.resources.length > 0) {
|
|
542
|
+
startTime.setHours(0, 0, 0, 0);
|
|
543
|
+
return new Date(startTime.setDate(1));
|
|
544
|
+
}
|
|
545
|
+
return null;
|
|
546
|
+
};
|
|
528
547
|
ViewBase.prototype.destroy = function () {
|
|
529
548
|
if (this.element && this.element.parentNode) {
|
|
530
549
|
remove(this.element);
|
|
@@ -331,7 +331,8 @@ var Year = /** @class */ (function (_super) {
|
|
|
331
331
|
return this.parent.currentView === 'Year' ? util.getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek) : this.getStartDate();
|
|
332
332
|
};
|
|
333
333
|
Year.prototype.endDate = function () {
|
|
334
|
-
return this.parent.currentView === 'Year' ? util.addDays(util.getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) :
|
|
334
|
+
return this.parent.currentView === 'Year' ? util.addDays(util.getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) :
|
|
335
|
+
util.addDays(this.getEndDate(), 1);
|
|
335
336
|
};
|
|
336
337
|
Year.prototype.getEndDateFromStartDate = function (start) {
|
|
337
338
|
var date = new Date(start.getTime());
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/*! recurrence editor theme wise definitions*/
|
|
2
|
-
/*! Schedule component's bootstrap theme definitions and variables */
|
|
1
|
+
/*! recurrence editor theme wise definitions*/ /*! Schedule component's bootstrap theme definitions and variables */
|
|
3
2
|
.e-schedule .e-schedule-toolbar .e-icon-prev::before {
|
|
4
3
|
content: "\e990";
|
|
5
4
|
}
|
|
@@ -1073,8 +1072,6 @@
|
|
|
1073
1072
|
height: 70px;
|
|
1074
1073
|
}
|
|
1075
1074
|
.e-schedule .e-month-view .e-content-wrap {
|
|
1076
|
-
display: -ms-flexbox;
|
|
1077
|
-
display: flex;
|
|
1078
1075
|
font-size: 13px;
|
|
1079
1076
|
}
|
|
1080
1077
|
.e-schedule .e-month-view .e-date-header-wrap table col {
|
|
@@ -1503,6 +1500,10 @@
|
|
|
1503
1500
|
position: absolute;
|
|
1504
1501
|
top: 0;
|
|
1505
1502
|
}
|
|
1503
|
+
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-container.e-event-container {
|
|
1504
|
+
height: 75px;
|
|
1505
|
+
position: relative;
|
|
1506
|
+
}
|
|
1506
1507
|
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-wrapper {
|
|
1507
1508
|
position: absolute;
|
|
1508
1509
|
}
|
|
@@ -2468,7 +2469,7 @@
|
|
|
2468
2469
|
}
|
|
2469
2470
|
|
|
2470
2471
|
.e-bigger .e-dialog.e-quick-dialog.e-following-events-dialog {
|
|
2471
|
-
width:
|
|
2472
|
+
width: 502px;
|
|
2472
2473
|
}
|
|
2473
2474
|
|
|
2474
2475
|
.e-dialog.e-quick-dialog.e-following-events-dialog {
|
package/styles/bootstrap.css
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/*! recurrence editor theme wise definitions*/
|
|
2
|
-
/*! Schedule component's bootstrap theme definitions and variables */
|
|
1
|
+
/*! recurrence editor theme wise definitions*/ /*! Schedule component's bootstrap theme definitions and variables */
|
|
3
2
|
.e-schedule .e-schedule-toolbar .e-icon-prev::before {
|
|
4
3
|
content: "\e990";
|
|
5
4
|
}
|
|
@@ -1071,8 +1070,6 @@
|
|
|
1071
1070
|
height: 70px;
|
|
1072
1071
|
}
|
|
1073
1072
|
.e-schedule .e-month-view .e-content-wrap {
|
|
1074
|
-
display: -ms-flexbox;
|
|
1075
|
-
display: flex;
|
|
1076
1073
|
font-size: 13px;
|
|
1077
1074
|
}
|
|
1078
1075
|
.e-schedule .e-month-view .e-date-header-wrap table col {
|
|
@@ -1501,6 +1498,10 @@
|
|
|
1501
1498
|
position: absolute;
|
|
1502
1499
|
top: 0;
|
|
1503
1500
|
}
|
|
1501
|
+
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-container.e-event-container {
|
|
1502
|
+
height: 75px;
|
|
1503
|
+
position: relative;
|
|
1504
|
+
}
|
|
1504
1505
|
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-wrapper {
|
|
1505
1506
|
position: absolute;
|
|
1506
1507
|
}
|
|
@@ -2466,7 +2467,7 @@
|
|
|
2466
2467
|
}
|
|
2467
2468
|
|
|
2468
2469
|
.e-bigger .e-dialog.e-quick-dialog.e-following-events-dialog {
|
|
2469
|
-
width:
|
|
2470
|
+
width: 502px;
|
|
2470
2471
|
}
|
|
2471
2472
|
|
|
2472
2473
|
.e-dialog.e-quick-dialog.e-following-events-dialog {
|
package/styles/bootstrap4.css
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/*! recurrence editor theme wise definitions*/
|
|
2
|
-
/*! Schedule component's bootstrap4 theme definitions and variables */
|
|
1
|
+
/*! recurrence editor theme wise definitions*/ /*! Schedule component's bootstrap4 theme definitions and variables */
|
|
3
2
|
.e-schedule .e-schedule-toolbar .e-icon-prev::before {
|
|
4
3
|
content: "\e78c";
|
|
5
4
|
}
|
|
@@ -1073,8 +1072,6 @@
|
|
|
1073
1072
|
height: 70px;
|
|
1074
1073
|
}
|
|
1075
1074
|
.e-schedule .e-month-view .e-content-wrap {
|
|
1076
|
-
display: -ms-flexbox;
|
|
1077
|
-
display: flex;
|
|
1078
1075
|
font-size: 14px;
|
|
1079
1076
|
}
|
|
1080
1077
|
.e-schedule .e-month-view .e-date-header-wrap table col {
|
|
@@ -1506,6 +1503,10 @@
|
|
|
1506
1503
|
position: absolute;
|
|
1507
1504
|
top: 0;
|
|
1508
1505
|
}
|
|
1506
|
+
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-container.e-event-container {
|
|
1507
|
+
height: 75px;
|
|
1508
|
+
position: relative;
|
|
1509
|
+
}
|
|
1509
1510
|
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-wrapper {
|
|
1510
1511
|
position: absolute;
|
|
1511
1512
|
}
|
|
@@ -2485,7 +2486,7 @@
|
|
|
2485
2486
|
}
|
|
2486
2487
|
|
|
2487
2488
|
.e-bigger .e-dialog.e-quick-dialog.e-following-events-dialog {
|
|
2488
|
-
width:
|
|
2489
|
+
width: 502px;
|
|
2489
2490
|
}
|
|
2490
2491
|
|
|
2491
2492
|
.e-dialog.e-quick-dialog.e-following-events-dialog {
|
|
@@ -1079,8 +1079,6 @@
|
|
|
1079
1079
|
height: 70px;
|
|
1080
1080
|
}
|
|
1081
1081
|
.e-schedule .e-month-view .e-content-wrap {
|
|
1082
|
-
display: -ms-flexbox;
|
|
1083
|
-
display: flex;
|
|
1084
1082
|
font-size: 14px;
|
|
1085
1083
|
}
|
|
1086
1084
|
.e-schedule .e-month-view .e-date-header-wrap table col {
|
|
@@ -1510,6 +1508,10 @@
|
|
|
1510
1508
|
position: absolute;
|
|
1511
1509
|
top: 0;
|
|
1512
1510
|
}
|
|
1511
|
+
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-container.e-event-container {
|
|
1512
|
+
height: 75px;
|
|
1513
|
+
position: relative;
|
|
1514
|
+
}
|
|
1513
1515
|
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-wrapper {
|
|
1514
1516
|
position: absolute;
|
|
1515
1517
|
}
|
|
@@ -2493,7 +2495,7 @@
|
|
|
2493
2495
|
}
|
|
2494
2496
|
|
|
2495
2497
|
.e-bigger .e-dialog.e-quick-dialog.e-following-events-dialog {
|
|
2496
|
-
width:
|
|
2498
|
+
width: 502px;
|
|
2497
2499
|
}
|
|
2498
2500
|
|
|
2499
2501
|
.e-dialog.e-quick-dialog.e-following-events-dialog {
|
package/styles/bootstrap5.css
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/*! recurrence editor theme wise definitions*/
|
|
2
|
-
/*! Schedule's bootstrap5 theme wise override definitions and variables */
|
|
1
|
+
/*! recurrence editor theme wise definitions*/ /*! Schedule's bootstrap5 theme wise override definitions and variables */
|
|
3
2
|
.e-schedule .e-schedule-toolbar .e-icon-prev::before {
|
|
4
3
|
content: "\e765";
|
|
5
4
|
}
|
|
@@ -1080,8 +1079,6 @@
|
|
|
1080
1079
|
height: 70px;
|
|
1081
1080
|
}
|
|
1082
1081
|
.e-schedule .e-month-view .e-content-wrap {
|
|
1083
|
-
display: -ms-flexbox;
|
|
1084
|
-
display: flex;
|
|
1085
1082
|
font-size: 14px;
|
|
1086
1083
|
}
|
|
1087
1084
|
.e-schedule .e-month-view .e-date-header-wrap table col {
|
|
@@ -1511,6 +1508,10 @@
|
|
|
1511
1508
|
position: absolute;
|
|
1512
1509
|
top: 0;
|
|
1513
1510
|
}
|
|
1511
|
+
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-container.e-event-container {
|
|
1512
|
+
height: 75px;
|
|
1513
|
+
position: relative;
|
|
1514
|
+
}
|
|
1514
1515
|
.e-schedule .e-timeline-year-view .e-event-table .e-appointment-wrapper {
|
|
1515
1516
|
position: absolute;
|
|
1516
1517
|
}
|
|
@@ -2494,7 +2495,7 @@
|
|
|
2494
2495
|
}
|
|
2495
2496
|
|
|
2496
2497
|
.e-bigger .e-dialog.e-quick-dialog.e-following-events-dialog {
|
|
2497
|
-
width:
|
|
2498
|
+
width: 502px;
|
|
2498
2499
|
}
|
|
2499
2500
|
|
|
2500
2501
|
.e-dialog.e-quick-dialog.e-following-events-dialog {
|